javascript - jQuery选择器问题

查看:103
本文介绍了javascript - jQuery选择器问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

    <ul class="recom_htol">
      <li><i>0</i><a href="javascript:void(0);">内部会员管理系统</a><span>23</span></li>
      <li><i>0</i><a href="javascript:void(0);">内部会员管理系统</a><span>13</span></li>
      <li><i>0</i><a href="javascript:void(0);">内部会员管理系统</a><span>10</span></li>
    </ul>
    
    <ul class="recom_htol">
      <li><i>0</i><a href="javascript:void(0);">内部会员管理系统</a><span>23</span></li>
      <li><i>0</i><a href="javascript:void(0);">内部会员管理系统</a><span>13</span></li>
      <li><i>0</i><a href="javascript:void(0);">内部会员管理系统</a><span>10</span></li>
    </ul>
    

两个ul格式内容完全一样,现在要做的是把标签内的数字改成它的序列号,我是这样写的:

$(".recom_htol li").eq(0).find("i").text("1").css("color","#fe4b5f");
$(".recom_htol li").eq(1).find("i").text("2").css("color","#e66573");
$(".recom_htol li").eq(2).find("i").text("3").css("color","#b67179");

结果只改了前面一个,后面的ul里的li的index是3/4/5,我需要的都是1/2/3,而且每个123是要有相应的颜色。我如果要实现我的想法,该怎么处理这个呢

解决方案

(function(){
    // jquery 1.8.3 我用的测试,lis是能获取的所有 ,recom_htol li的
    var lis = $(".recom_htol li");
    [].forEach.call(lis, function(e,i){
        $(e).find('i').text(i+1);
    });
})()

$(".recom_htol li")选择器已经获取到了所有li,下一步只需要遍历这个类数组,然后把对应的index处理完加进对应的i标签里面即可

更新

(把颜色也加上了,题主的颜色看着不明显,我随便用颜色了)

如果是只要123,那就取余运算咯~

(function(){
    var col = ["blue", "green", "red"];
    var lis = $(".recom_htol li");
    [].forEach.call(lis, function(e,i){
        var index = i%3;
        $(e).find('i').text(index+1).css({color:col[index]});
    });
})()

再更新

如果主要是要每个ul的重新编号,可以考虑用遍历的时候获取其当前的父元素后再查找自己的li到底的序号,不过这样感觉性能不好,每一项都要重新获取一次父元素,再去find li再去获取index。


(function(){
    var col = ["blue", "green", "red",'yellow','pink'];
    var lis = $(".recom_htol li");
    [].forEach.call(lis, function(e,i){
        var thisDom = $(e);
        var parent = thisDom.parent('ul');
        var index = parent.find('li').index(e);
        $(e).find('i').text(index+1).css({color:col[index]});
    });
})()

我觉得倒不如楼下有人回复的那种, 从ul入手,遍历ul,每个ul再遍历自己的li们,再逐个赋值,就不会有序号需要重新编号的需求了,反正写了这么多了,我就再写写~


(function(){
    var col = ["blue", "green", "red",'yellow','pink'];
    var ul = $(".recom_htol");
    ul.each(function(){
        var lis = $(this).find('li');
        lis.each(function(index){
            $(this).find('i').text(index+1).css({color:col[index]});
        });
    });
})()

这篇关于javascript - jQuery选择器问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆