开发者社区> 问答> 正文

jquery在循环中取i值

for(var i=0;i<slideLength;i++){
        $(".slide").eq(i).index=i;
        $(".slide").eq(i).on("click",function(){
            console.log($(this).index);
        });
    }

我想问一下,我用$(".slide").eq(i)这句话来取第i个节点,还有其他方法吗,最重要的是console.log($(this).index); 这个是不存在的,我想问一下为什么呢??

展开
收起
小旋风柴进 2016-05-27 10:27:03 1686 0
1 条回答
写回答
取消 提交回答
  • 我们从实际的应用来表达一下你的意思吧
    举个例子,有这样一堆li

    <ul class="list">
        <li>Bootstrap</li>
        <li>jQuery</li>
        <li>gulp</li>
        <li>angular</li>
    </ul>

    我希望点击每个li,都能够在控制台中输出li的内容,于是可以这样写

    $(function() {
        $('.list').on('click', function(e) {
            console.log($(e.target).html());
        })
    });

    你运行试试看,效果已经达到了。
    这里运用了事件委托的思想,在点击时,使用 $(e.target)来判断被点击的对象
    其中 e.target是DOM对象,表示的是被点击的li,
    $(e.target)当然就是被点击那个li的jQuery对象了

    也许在其他的一些应用场景中,你需要得到被点击li的序列,比如幻灯片切换效果的那一堆小按钮,除了在li中直接设置1,2,3,4之外,现在还流行一种做法,就是设置诸如data-item之类的属性值

    整个例子的完整代码如下

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="js/jquery-2.0.3.js"></script>
    </head>
    <body>
        <ul class="list">
            <li>Bootstrap</li>
            <li>jQuery</li>
            <li>gulp</li>
            <li>angular</li>
        </ul>
    </body>
    <script>
    $(function() {
    
        $('.list li').each(function(i) {
            $(this).attr('data-item', i);
        })
    
        $('.list').on('click', function(e) {
            var $curLi = $(e.target);
            console.log($curLi.html()); //输出当前li的值
            console.log($curLi.attr('data-item')); //输出当前li的序列
        })
    });
    </script>
    </html>
    2019-07-17 19:17:12
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载