Javascript 为什么可以';我不能让每个tr标签都有一个事件来工作吗?
我试图使一个大表的每个tr在单击时切换其td中的一个div,下面是我所做的:Javascript 为什么可以';我不能让每个tr标签都有一个事件来工作吗?,javascript,jquery,html-table,event-handling,Javascript,Jquery,Html Table,Event Handling,我试图使一个大表的每个tr在单击时切换其td中的一个div,下面是我所做的: for( i = 2 ; i < trLen; i++ ){ var id = $("td.idout", "tr:eq(" + i + ")").text(); $("tr:has(div#" + id + ")").click(function(){ $("div #"+ id).toggle(); }); } (i=2;i
for( i = 2 ; i < trLen; i++ ){
var id = $("td.idout", "tr:eq(" + i + ")").text();
$("tr:has(div#" + id + ")").click(function(){
$("div #"+ id).toggle();
});
}
(i=2;i{
var id=$(“td.idout”,“tr:eq(“+i+”)).text();
$(“tr:has(div#“+id+”))。单击(function(){
$(“div#“+id).toggle();
});
}
我使每个div的id与条目相同(在上面的
var id
引用的选择中输出)。我已经测试了每一个选择,他们都是完美的。我的逻辑一定有问题,因为它根本不起作用。它根本不起任何作用。在div
和#
符号之间有一个冗余空间,该符号不是选择具有特定id
的div,而是选择div中具有id
的元素:
尝试更改:
$("div #"+ id).toggle();
与:
该函数声明了作用域变量,与您可能期望的块作用域相反。因此,您只有一个id
,它由for
循环的每个迭代共享。而且,由于循环完成后将调用click
函数,id
将始终具有循环中此选择器的最后一个值:
...function(){
$("div#"+ id).toggle();
}...
您可以使用一个立即调用的函数来解决此问题,该函数将为每次迭代指定变量:
for( i = 2 ; i < trLen; i++ ) {
(function () {
var id = $("td.idout", "tr:eq(" + i + ")").text();
...
})();
}
@GiovanniDiToro你能发布html吗?
for( i = 2 ; i < trLen; i++ ) {
(function () {
var id = $("td.idout", "tr:eq(" + i + ")").text();
...
})();
}
for( i = 2 ; i < trLen; i++ ) {
let id = $("td.idout", "tr:eq(" + i + ")").text();
...
}