开发者社区> 问答> 正文

关于jQuery选择器的问题

$(function(){

        $('.div4table tr td.trigger').each(function(){
            this.click(function(){
                $('#toggle'+index).toggle();
            });
        });
    });

这一块代码难道有问题么,怎么绑定不上点击事件啊?求找bug。。
下面是相关的一块代码

<div class="div4table">
    <tr>
    <td>#agent_ip#</td>
    <td>#ip#/#type#</td>
    <td>#tcp_max#/#tcp_min#/#tcp_avg#</td>
    <td>#tcp_lost#/#tcp_send#</td>
    <td>#icmp_max#/#icmp_min#/#icmp_avg#</td>
    <td> #icmp_lost#/#icmp_send#</td>
    <td class="trigger">查看/收起</td>
    </tr>
    <tr id="toggle#i#"><td colspan="7"><div>这个地方要展示的是影藏起来了的其他的信息</div></td></tr>
</div>

补充一下问题我的表格是循环生成的,我会产生许多类名为trigger的TD,而我想每一个对应绑定下面动态生成ID的

展开
收起
小旋风柴进 2016-05-30 10:48:09 1979 0
1 条回答
写回答
取消 提交回答
  •  $('.div4table tr td.trigger').each(function(){
            this.click(function(){
                $('#toggle'+index).toggle();
            });
        });
    });

    1)index变量在哪里?
    2)this是一个DOM对象,而不是jquery对象
    DOM对象也有click方法,但是出入回调函数没有效果
    3)上面的代码为没有个td.trigger绑定了一个回调,当多行多列td.trigger时,不是好的写法

    修改如下:

    //使用事件代理机制 利用事件冒泡,使用div.div4table代理发生在td.trigger上的click事件
    $('.div4table').on("click","tr td.trigger",function(){
        //为你的td.trigger 添加一个自有属性,记录td的index值,这样不用再去计算
        var index=$(this).attr("td-index");
        $('#toggle'+index).toggle();
    });
    2019-07-17 19:19:15
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

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