$("#table").click(function(e) {
var row = jQuery(e.target || e.srcElement).parent();
$('#table tr').bind('click', show);
name= row.attr("id");
});
我第一次点击这行时,我没有得到id值? 我第二次变好了吗? 任何人都可以告诉我为什么会这样发生吗?
答案 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)
我认为这个问题很棘手,因为你已经嵌套了你的点击处理程序。试着在没有嵌套的情况下做到这一点。我知道你会得到想要的结果。