繁体   English   中英

td行上的jQuery click事件未触发

[英]jQuery click event on td row not firing

我有一个简单的jQuery,如果选中,它会显示当前一行下面的行。

我想要的是所有的<td>元素,但是要触发这个方法。

适用于整个<tr>

        $(document).ready(function(){

        $("#report > tbody > tr.odd").click(function(){
            $(this).next("#report tr").fadeToggle(600);
        });
    });

想做点什么(不起作用)

    $(document).ready(function(){

        $("#report > tbody > tr.odd > td.selected").click(function(){
            $(this).next("#report tr").fadeToggle(600);
        });
    });

在你的非工作代码中, $(this)是一个<td>元素。

因此, $(this).next("#report tr")与任何内容都不匹配。 (因为<td>元素没有<tr>元素作为兄弟姐妹)

您需要将其更改为$(this).closest('tr').next("#report tr")以查找“uncle”元素。 你也可以调用.parent()而不是.closest('tr') ,但是即使你将click处理程序绑定到<td>的子.closest ,调用.closest也会继续工作。

你需要这样的东西:

 $(document).ready(function(){
    $("#report tr:not(.odd)").hide();
    $("#report tr:first-child").show();

    $("#report > tbody > tr.odd > td.selected").click(function(){
        $(this).closest("tr").next("tr").fadeToggle(600);
    });
});

由于您单击了某个td,因此在尝试获取下一行之前需要前往该行。 此选择器在大多数情况下也应该相同: #report td.selected 因为你无法逃脱与兄弟一起进入#report#report tr也可以只是你的next() tr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM