jquery click事件在第一次单击时不起作用,

时间:2010-04-08 18:03:14

标签: jquery

$("#table").click(function(e) {
                var row = jQuery(e.target || e.srcElement).parent();
                $('#table tr').bind('click', show);
                name= row.attr("id");
            });

我第一次点击这行时,我没有得到id值? 我第二次变好了吗? 任何人都可以告诉我为什么会这样发生吗?

4 个答案:

答案 0 :(得分:2)

当您单击表格时,您似乎将事件绑定到一行。这意味着您绑定到该行的onclick处理程序将不会被绑定(因此,不会被执行),直到 之后您点击了表格至少一次。

但也许我不完全明白你想要做什么。你能解释一下你的最终目标是什么吗?

答案 1 :(得分:1)

只需将您的click函数放在(document).ready()中,如下所示:

$(document).ready(function(){ 
        $("#table").click(function(e) {
        var row = jQuery(e.target || e.srcElement).parent();
        $('#table tr').bind('click', show);
        name= row.attr("id");
        });
});

然后它将起作用。

答案 2 :(得分:0)

嗯,首先,你可能不会在TD上触发事件,但它可以是TD内的任何内容,例如SPAN。那会使parent()以外的东西比你期望的那样。尝试使用$(e.target).closest("TR")

此外,在JQuery中,您不需要使用e.srcElement,它会为您规范化事件对象。

修改: 您的问题对我来说仍然不是很清楚,但根据您的评论,您希望在点击某行时弹出行ID:

$("#table").click(function(e) {
            var row = $(e.target).closest("TR");
            name=$(row).attr("id");
            show(row);
        });

但是,这与您下面的评论不一致,您说您希望第二次点击显示第二行,第三次点击显示第三行等等。

答案 3 :(得分:0)

我认为这个问题很棘手,因为你已经嵌套了你的点击处理程序。试着在没有嵌套的情况下做到这一点。我知道你会得到想要的结果。