关于数据与后端进行交流匹配(点亮星星)


Posted in Javascript onAugust 03, 2016

1.在项目中碰到了商品评价页面,里面有关于对商品的星星评价,当时的我只是把效果写出来了(就是用户点击几颗星星亮就显现几颗亮),

当我做好页面交给后端同事的时候,他说我这样做没有意义他没法做,那时我的脑子有些懵了。

后来后端同事说他来捣腾算了,作为一名21世纪的阳光好青年怎么能够把自己的任务都让同事来帮忙完成呢~

通过同事一番指教和自己的探索,总算明白了这里面的关系,下面我通过自己的话来说明这个程序应该怎么写,要具备哪些操作。

a,先上图:

关于数据与后端进行交流匹配(点亮星星)

b:上面图片评价一个亮了5颗,一个亮了4颗,是什么东西让它这样的呢?见下图:

关于数据与后端进行交流匹配(点亮星星)

是的,没错,起始星星的点亮颗数就是因为data

c: 现在可以来谈论一下这个data了,可是这个data是个什么东西呢?

原来他是前端和后端约定好在取存数据的地方(可以给它取任意名字tada,tdat都可以),后端可以给它赋值,data等于多少就亮多少颗星星。可是为什么要这个data呢?

是酱紫的:用户a点击星星的时候是为了之后可以给用户b用户c用户d...看的,所以用户点击的这个星星的个数必须可以存储(赋值)在某个地方(也就是data)上让后台能够取到

也就是前端赋值,后端取值,而后后端把取得的数据储存在数据库中而后重新赋值于data上,以显示用户a曾评价的好评的星星个数。

前端赋值-----》后端取值--》后端储存数据--》后端根据储存的数据反馈给前端--》前端根据后端反馈的数据在页面中展现相应的效果

好了,清楚了逻辑就可以写程序了:

$('.evaluate_mark').each(function(){
var star = $(this).find('.u-grade').attr('data'); //获取data 一个为5,一个为4
/*alert(star)*/
$(this).find('.u-grade div').removeClass('light'); //移除所有class的 light
$(this).find('.u-grade div').each(function(i,ele){ //ele当前的元素, i当前元素的索引
if(i<star){ 
/*alert(i);*/ 
/*alert(ele);*/ 
$(ele).addClass('light'); 
}
});
});

上面的代码比较简单,首先遍历,遍历找到.u-grade下面的div,也就是u-grada_item,

找到它之后把它所有的light移除掉(light是css中点亮星星的class),而后把u-grada_item进行遍历,star已经取得了data值,根据i<star进行判断

从而显示星星亮度的个数,也就是上面第一张图一个亮五颗星一个亮四颗。

4.1:至此我们已经完成了后端赋值,前端表现效果这一块了。此时还差两块,

一块是用户点击产生效果这一块,另一块是把用户点击当前星星的那个数值赋值在data上(让后端取值保存,重新赋值展现)

4.2:下面来做用户点击表现效果这一块

$(function(){
$.setGrade = function($ele,index){
var $item = $ele.find(".u-grade_item");
$item.removeClass("light"); 
$item.slice(0,index+1).addClass("light"); 
/*alert(index+1);*/
};

(function(){

var $item = $(".u-grade .u-grade_item"); 

$item.click(function(){

var $this = $(this); /*定义一个变量保存当前的$item对象*/

var index = $this.parent(".u-grade").children(".u-grade_item").index($this); 

//通过index()返回指定元素的index位置,也就是自己所认为的当前元素的索引值

/*alert(index);*/

$.setGrade($this.parent(),index); //jQuery下的静态方法

})
})();
});

a:代码实现就不一一说了,可以看注释,就这样,就完成用户点击产生效果这一块,下面只差最后一块了,把用户点击的这个星星的数值赋值在data上,

明确这个就很好办了:

(function(){
var $item = $(".u-grade .u-grade_item"); 
$item.click(function(){
var $this = $(this); 
var index = $this.parent(".u-grade").children(".u-grade_item").index($this); 



  var star = $(this).parent(".u-grade").attr('data',index+1);
//把点击当前的那个元素的索引赋值给data,以可以改变原来data的数值
$.setGrade($this.parent(),index); //jQuery下的静态方法
})
})();

好了,到此本文的全部内容就介绍完了,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery表单获取和失去焦点输入框提示效果的实例代码
Aug 01 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
浅谈AngularJs指令之scope属性详解
Oct 24 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
Jun 29 Javascript
vue小图标favicon不显示的解决方案
Sep 19 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
Sep 05 Javascript
详解小程序开发经验:多页面数据同步
May 18 Javascript
微信小程序实现侧边栏分类
Oct 21 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 #Javascript
极力推荐10个短小实用的JavaScript代码段
Aug 03 #Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
Aug 03 #Javascript
15款最好的Bootstrap在线编辑器
Aug 03 #Javascript
基于d3.js实现实时刷新的折线图
Aug 03 #Javascript
JS判断iframe是否加载完成的方法
Aug 03 #Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 #Javascript
You might like
PHP多维数组元素操作类的方法
2016/11/14 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python OpenCV实现图片上输出中文
2018/01/22 Python
Python中函数参数调用方式分析
2018/08/09 Python
对python3新增的byte类型详解
2018/12/04 Python
对Python信号处理模块signal详解
2019/01/09 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Python中有几个关键字
2020/06/04 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
个人求职信范例
2014/01/29 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
见习报告的格式
2014/10/31 职场文书
面试通知邮件
2015/04/20 职场文书
逃课检讨书范文
2015/05/06 职场文书
盗窃案辩护词
2015/05/21 职场文书
开学随笔
2015/08/15 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS