jquery实现类似淘宝星星评分功能实例

  1. 引入jQuery

首先,在网页中引入jQuery库,可以从jQuery官网下载最新版本,也可以使用CDN加速服务来引用jQuery,例如:

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
  1. HTML结构

在页面HTML中,需要创建一个容器元素用于显示星星评分,例如:

<div class="rating">
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
</div>

其中每个星星评分都使用一个<span>元素来表示,将它们放在外层容器元素.rating中。

  1. CSS样式

为星星评分添加CSS样式,例如:

.rating {
  display: inline-block;
  font-size: 0;
  height: 24px;
  position: relative;
  width: 120px;
}

.star {
  background: url('star.png') no-repeat 0 0;
  display: inline-block;
  height: 24px;
  width: 24px;
}

.star:hover,
.star:hover ~ .star {
  background-position: 0 -24px;
}

.star.active,
.star.active ~ .star {
  background-position: 0 -48px;
}

在上述样式中,.rating指定外层容器的大小和布局,.star指定星星评分的样式,包括背景图片、大小等内容。使用background-position属性对星星的状态进行控制,由active类和hover伪类设置不同的背景位置。

  1. JavaScript代码

在页面加载完成时,为星星评分添加事件监听器,例如:

$(document).ready(function() {
  $('.star').click(function() {
    $(this).addClass('active').prevAll('.star').addClass('active');
    $(this).nextAll('.star').removeClass('active');
  });

  $('.star').hover(function() {
    $(this).addClass('hover').prevAll('.star').addClass('hover');
    $(this).nextAll('.star').removeClass('hover');
  }, function() {
    $('.star').removeClass('hover');
  });
});

在上述代码中,$(document).ready()方法用于在页面加载完成后执行代码。.star元素的click()方法用于为星星评分添加点击事件的监听器,通过为选中的星星添加active类和其前面的所有星星也添加active类的方式来实现星星评分的交互效果。.star元素的hover()方法用于添加鼠标移动事件的监听器,根据鼠标位置改变星星的样式,并通过移除所有星星的hover类来实现取消鼠标移动事件的效果。

  1. 示例说明

(1) 动态输出星星评分

对于需要把星星评分的结果提交给服务器的情况,可以在JavaScript代码中添加一个变量来保存当前的星星评分,例如:

var rating = 0; // 初始评分值为0

$('.star').click(function() {
  var index = $(this).index() + 1; // 获取当前点击的星星的索引值
  rating = index; // 更新评分值

  $(this).addClass('active').prevAll('.star').addClass('active');
  $(this).nextAll('.star').removeClass('active');
});

此时,在需要提交评分值的时候,可以将rating变量的值发送给服务器,例如:

$.ajax({
  url: 'rating.php',
  type: 'POST',
  data: { rating: rating },
  success: function(response) {
    // 处理服务器返回的响应内容
  }
});

(2) 显示当前平均评分

对于需要显示当前产品的平均评分的情况,可以在JavaScript代码中使用数据接口来获取所有用户的评分并计算平均值,例如:

$.ajax({
  url: 'ratings.php',
  type: 'GET',
  success: function(response) {
    var ratings = JSON.parse(response); // 将评分数据解析为JSON格式
    var total = 0, count = ratings.length;

    for (var i = 0; i < count; i++) {
      var rating = parseInt(ratings[i].rating);
      total += rating;
    }

    var average = count > 0 ? total / count : 0; // 计算平均值

    // 显示平均评分
    $('.rating').attr('title', '平均评分为:' + average.toFixed(1) + ' 分');
  }
});

在此示例中,ratings.php文件返回一个JSON格式的数据,包括所有用户的评分,例如:

[
  { "rating": "4" },
  { "rating": "5" },
  { "rating": "3" },
  { "rating": "2" }
]

通过遍历所有评分数据并计算平均值,可以得到当前产品的平均评分,并将其显示在星星评分的外层容器中。使用attr()方法来更新容器元素的title属性,在鼠标悬停在容器上时显示平均评分的数值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery实现类似淘宝星星评分功能实例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • jQWidgets jqxGrid sortby()方法

    jQWidgets jqxGrid sortby()方法 jQWidgets jqxGrid 是一种表格控件,用于在 Web 应用程序中创建表格。sortby() 方法是 jqxGrid 控件的一个方法,用于按指定列进行排序。本文将详细讲解 sortby() 的使用方法,并提供两个示例说明。 方法 sortby() 方法用于按指定列进行排序。该方法接受一个参…

    jquery 2023年5月10日
    00
  • jQWidgets jqxListBox hasThreeStates属性

    jQWidgets jqxListBox hasThreeStates属性详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxListBox是其中之一。本文将详细介绍jqxListBox的hasThreeStates属性,包括定义、语法和示例。 hasThreeStates属性的定义 jqxListBox的ThreeS…

    jquery 2023年5月10日
    00
  • jQWidgets jqxDateTimeInput formatString属性

    以下是关于“jQWidgets jqxDateTimeInput formatString属性”的完整攻略,包含两个示例说明: 属性简介 jqxDateTimeInput 控件的 formatString 属性用于设置日期时间格式。该属性的语法如下: $("#jqxDateTimeInput").jqxDateTimeInput({ fo…

    jquery 2023年5月10日
    00
  • jQWidgets jqxDropDownButton getContent()方法

    jQWidgets jqxDropDownButton getContent()方法 jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI组件和工具包括表格下拉等。jqxDropDownButton是jQWidgets的组件之一,用于创建下拉按钮。getContent()方法是jqxDropDownButton的一个方法,用于获取下拉按钮的…

    jquery 2023年5月9日
    00
  • 7个有用的jQuery代码片段分享

    下面是详细的攻略: 7个有用的jQuery代码片段分享 1. 向上滚动触发动画 这段代码可以实现在滚动页面时,当元素到达页面顶部时触发动画。具体步骤如下: // 监听页面滚动事件 $(window).scroll(function() { // 获取元素的位置信息 var element = $(‘#target’); var elementPosition…

    jquery 2023年5月28日
    00
  • jQWidgets的jqxScheduler渲染属性

    以下是关于 jQWidgets jqxScheduler 渲染属性的详细攻略。 jQWidgets jqxScheduler 渲染属性 jQWidgets jqxScheduler 是功能强大的日程表组件,它提供了多种渲染属性,可以帮助您自定义日程表的外观和行为。 渲染属性列表 以下 jQWidgets jqxScheduler 的渲染属性列表: appoi…

    jquery 2023年5月12日
    00
  • JQuery扩展插件Validate—6 radio、checkbox、select的验证

    关于JQuery扩展插件Validate对radio、checkbox、select的验证,以下是一些完整的攻略和示例。 标准的JQuery Validate验证规则 使用JQuery Validate对表单进行验证时,可以使用以下规则对radio、checkbox和select进行验证: required:必填项验证 minlength:最小长度验证 ma…

    jquery 2023年5月28日
    00
  • jquery关于页面焦点的定位(文本框获取焦点时改变样式 )

    首先需要明确的是,jQuery是一种JavaScript库,通常用于处理DOM操作和事件处理。在处理页面焦点的定位时,可以使用jQuery提供的一些方法,例如focus()、blur()等。 具体步骤如下: 1.选中需要获取焦点的文本框或其他表单元素,可以使用jQuery的选择器来选中。 //选中id为input1的文本框 $(‘#input1’) 2.通过…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部