谷粒商城p188-页面排序代码精简
看了雷神的课,代码太多又看着眼花了不想敲,而且有功能重复的地方,就想着自己换个方法做,但是又没有系统的学过前端,所以做了好几个小时,记录一下。
以下是代码 在js标签里的页面加载完成时执行的方法
// 页面渲染完成后执行的代码
window.onload = function () {
// 取出url
var url = window.location.href.toString();
// 正则的意义:是否有sort字段,取出按哪个字段排序,以及排序方式
var hasSort = eval('/(sort=)([^_&]*)_([^&]*)/gi');
// 将上面正则表达式括号里提取出每个值算作数组的一个元素,加上第0个元素默认为整个正则匹配到的值,组成数组(4个元素)
var sortArray = hasSort.exec(url);
// 判断url中是否有sort字段, 若有,给文本内容加上‘↑’或‘↓’
if (sortArray !== null && sortArray.length !== 0) {
// 遍历
$(".sort_a").each(function () {
// 清空排序标识字符
$(this).text($(this).text().replace('↓', '').replace('↑', ''));
// 同类元素清空
$(this).css({"color": "#333", "border-color": "#CCC", "background": "#FFF"});
// 获取每个的sortRule的值
var sortRule = $(this).attr("sortRule");
// 判断是否与url中的值对应,若是,判断升降序,然后加上标识字符
if (sortRule === sortArray[2]) {
// 当前点击的元素变为选中状态(背景变红.)
$(this).css({"color": "#FFF", "border-color": "#e4393c", "background": "#e4393c"})
// 不区分大小写,判断升降序
// *升序
if (sortArray[3].toLowerCase() === "asc".toLowerCase()) {
// 切换一个类,如果存在则删除,不存在则添加
$(this).toggleClass('asc');
//加上升序标识字符
$(this).text($(this).text() + '↑');
} else {
// *降序
$(this).toggleClass('desc');
$(this).text($(this).text() + '↓');
}
}
})
}
}
==注意!==上面代码中我的自定义属性的名字和视频中的不一样,所以改的时候注意一下(上面代码18行 $(this).attr(“
sortRule
”))
就是这不一样↓
然后注释掉之前那个多余的方法
看一下最后的
if
判断,如何当前是升序,就得发降序的请求,反之亦然
补充一点:我当时修改之后感觉鼠标放上去变成了 ‘ I ’ 这种图标,而不是个小手
//
一开始是这种
//
在每个a标签中加上这个属性
href="javascript:"
改完之后的效果,舒服了~
//
然而,新的问题是:鼠标指针移动到这几个选项上时,边框不变红了(不管是不是小手),有人知道怎么解决,可以说一下。谢谢
结束!