任何人都可以告诉我为什么会这样:
$("#test1 td").click(function(event) {
$("#test1").addClass("tableRowSelected");
});
$("#test2 td").click(function(event) {
$("#test2").addClass("tableRowSelected");
});
但这不是:
for(var i = 1; i < 3; i++) {
$("#test" + i + " td").click(function(event) {
$("#test" + i).addClass("tableRowSelected");
});
}
我也尝试在第二个代码段中使用i.toString()
,但这没有帮助:(
答案 0 :(得分:2)
事件处理函数接收{em>持久引用到i
变量,而不是它创建时的副本。有关详细信息,请参阅this other answer。
答案 1 :(得分:2)
如何使用:
$("table").on("click", "td", function() {
$(this).parent().addClass("tableRowSelected");
});
这将使用事件委派将事件附加到表并按td
过滤单击事件答案 2 :(得分:-1)
<强>更新强>
要使其发挥作用,请将$("#test" + i).addClass("tableRowSelected");
更改为$(this).parents('tr').addClass("tableRowSelected");
正如Pointy指出的那样,实际上我确实存在值为4的无效。
这是因为,在第二种情况下,当事件实际被触发时,i
不再存在。