最近做项目要做个商品评价的功能,我直接就跑到淘宝那里去研究了,可看着晕晕的,还不知道他是怎么做的,于是把图抠了下来,自己写了一个,接下来就展示一下我是怎么做的,大家有不同的实现方法可要记得分享一下呀。

  经过研究,我发现在脚本事件上来说,就分三个事件,鼠标移入事件,鼠标离开事件和点击事件。移入就让鼠标移入的星星和之前的星星都变色,点击在移入的基础上保存了当前点击的星星位置,离开则恢复到上次点击的那个星星。从样式上来说,这些星星可以共用一个图片,切换星星时让图片的一部分展示出来就可以了。

  这里展示Demo就只搞三个星星了,星星右边的文字提示也不弄了。这里用无链接的链接标签来放星星,使用链接有个好处就是如果以后要在点击星星时触发服务器的操作,比如点击星星直接完成评价操作,就可以直接用了,再用一个隐藏input来存放最近一次点击的星星的值:

<div id="rating-star">
<a href="#">0</a>
<a href="#">1</a>
<a href="#">2</a>
</div>

  接着给rating-star和链接一个样式,切换图片的关键只需要修改background-position就可以了:

#rating-star {
margin: 50px;
} #rating-star a {
background: url(commentstar.png) no-repeat 0 -90px;
display: inline-block;
height: 23px;
text-indent: -999em;
width: 23px;
}

  最后就是关键的脚本了:

        $('#rating-star').on('click', 'a', function () {
$('#rating-star').data('star', this.innerHTML);
}).on('mouseenter', 'a', function () {
setStar(this);
}).on('mouseleave', 'a', function () {
var $r_star = $('#rating-star');
var level = $r_star.data('star');
var $stars = $r_star.find('a');
if (level) {
setStar($stars[level]);
} else {
$stars.css('background-position', '0 -90px');
}
}); function setStar(star) {
var $this = $(star);
var level = $this.html();
var n;
if (level == '') {
n = '0 -30px';
} else if (level == '') {
n = '0 0';
} else {
n = '0 -60px';
}
$this.prevAll().andSelf().css('background-position', n);
$this.nextAll().css('background-position', '0 -90px');
     }

  这里有必要解释一下我的思路,可以看到点击事件只是给隐藏控件赋值,没做其他事,本来点击事件是要变换图片的,这事我发现鼠标移入事件已经做了,所以我就不再重复了,然后你会发现鼠标移入和离开最终都调用了setStar函数,那个方法其实就是把传入的星星以及他之前的星星改成相应的图片,把传入的星星之后的星星改成无颜色的星星,其实setStar也可以原html对象的数字下标,这样也可以用jquery的slice来实现。有些同志可能不知道'0 -30px'这些的是干什么的,其实'0 0'就是在原本默认的图片展示,-30px意思就是在y轴上把图片向上移动30个像素,这样在链接大小限定为长宽都为23px的情况下,我们看到的就是好评图片了,'0 0'对应的就是中评图片,'0 -60px'对应的就是差评图片,'0 -90px'对应的就是还没评价的图片。把原本的四个图片合成一张图片有什么好处呢,可以减少请求数,写代码也比较方便吧,估计脚本性能也会好点。

  亲自试一试

jQuery模仿淘宝商品评价的更多相关文章

  1. JQuery模仿淘宝天猫魔盒抢购页面倒计时效果

    1.效果及功能说明 通过对时间的控制来告诉用户一个活动还剩多少时间,精确到秒.2.实现原理 首先定义活动的截至的时间,要重年份精确到毫秒,在获得当前的年份到秒钟,在用截至时间,减去现在的时间,剩下的还 ...

  2. jquery模仿淘宝星星打分

    今天做论坛页面有星星评分功能,以下是代码.用的时候引入jquery <span> <ul class="hs_df_xx"> <li><i ...

  3. 用PHP抓取淘宝商品的用户晒单评论+图片实例

    为什么想起来做这个功能?是因为前段时间在做一个淘客网站的时候,想到是否能抓取到淘宝商品的买家秀呢?经过一番折腾发现,淘宝商品用户评价信息是通过Ajax来调取的,通过嗅探网址发现,评论数据的请求接口是: ...

  4. android ------ RecyclerView 模仿淘宝购物车

    电商项目中常常有购物车这个功能,做个很多项目了,都有不同的界面,选了一个来讲一下. RecyclerView 模仿淘宝购物车功能(删除选择商品,商品计算,选择, 全选反选,商品数量加减等) 看看效果图 ...

  5. 爬取淘宝商品信息,放到html页面展示

    爬取淘宝商品信息 import pymysql import requests import re def getHTMLText(url): kv = {'cookie':'thw=cn; hng= ...

  6. YY一下淘宝商品模型

    淘宝的电商产品种类非常丰富,必然得力于其商品模型的高度通用性和扩展性. 下面我将亲自操作淘宝商品的发布过程,结合网上其他博客对淘宝网商品库的分析,简单谈谈我的理解. 注:下面不特殊说明,各个表除主键外 ...

  7. jquery仿淘宝规格颜色选择效果

    jquery实现的仿淘宝规格颜色选择效果源代码如下 jquery仿淘宝规格颜色选择效果 -收缩HTML代码 运行代码 [如果运行无效果,请自行将源代码保存为html文件运行] <script t ...

  8. 一款基于jQuery仿淘宝红色分类导航

    今天给大家分享一款基于jQuery仿淘宝红色分类导航.这款分类导航适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览    ...

  9. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

随机推荐

  1. H5+ 移动app学习之二 Native.js

    Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术.如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展到手机 ...

  2. POCO库——Foundation组件之日期时间DateTime

    日期时间DateTime:内部提供多个设计计时器.日期.时区.时间戳等: Clock.h :Clock时钟计时类,_clock:Int64类型时钟值,CLOCKVAL_MIN.CLOCKVAL_MAX ...

  3. 攻城狮在路上(陆)-- 提交运行MapReduce程序到hadoop集群运行

    此种方式不能直接在eclipse中调试代码. 首先需要在src下放置服务器上的hadoop配置文件:core-site.xml\yarn-site.xml\hdfs-site.xml\mapred-s ...

  4. C# 通过反射获取扩展方法

    注意,扩展方法本质上是静态方法,所以拿到MethodInfo时,应该这么调用 methodInfo.Invoke(null, new object[]{params}) static IEnumera ...

  5. MIT 6.828 JOS学习笔记13 Exercise 1.10

    Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨 ...

  6. PDA手持机 移动开单进销存系统 现场出打印凭据和扫码 新的亮点

    传统车销模式弊端:1.手写开单,效率低,动作慢2.现场手写开单明细不能打印,产品明细不规范3.电脑办公人员及车销人员对车上的库存情况掌握不清楚,销售人员对每种产品销售价格不清楚4.老板对员工工作的管控 ...

  7. 分享一个discuz touch端的jQuery下拉刷新组件

    在线Demo 最近装了个discuz论坛, 趣股VIP吧,发现里面内置的jQuery上拉刷新组件写得还行,STATICURL可以用'http://o9gzet7tk.bkt.clouddn.com/i ...

  8. HDU4787 GRE Words Revenge(AC自动机 分块 合并)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4787 Description Now Coach Pang is preparing for ...

  9. Project 'king.commons' is missing required library: 'lib/plweb.jar' Build path Build Path Problem

    问题描述:之前在项目里引用一个jar 包,后来不用了删掉 ,但是没有删干净,然后报以下错误. 解决方案: 1.删除libraries 2.找到该项目下的 .classpath 文件,用记事本打开 ,删 ...

  10. spring3.0使用annotation完全代替XML(三)

    很久之前写过两篇博客: spring3.0使用annotation完全代替XML spring3.0使用annotation完全代替XML(续) 用java config来代替XML,当时还遗留下一些 ...