我的代码有问题,title
属性仅显示 16
,而不显示从 1
到 15 的所有值
。为什么会这样,谁能建议我做错了什么???
我的代码
x=1;
while(x <= 15)
{
$("td#id"+x).mouseover(function(x){
$(this).attr('title', x)
});
x++;
}
最佳答案
这是非常常见的“在回调中使用循环变量”问题。
当您使用 jQuery 时,最简单的修复方法是为处理程序添加一个 data
参数:
var x=1;
while (x <= 15) {
$("td#id"+x).mouseover({ x: x }, function(ev) {
this.title = ev.data.x;
});
x++;
}
也就是说,为什么只在 mouseover
函数中设置它?标题应该直接添加到元素中,只需一次:
for (var x = 1; x <= 15; ++x) {
document.getElementById('id' + x).title = x;
}
在 mouseover
处理程序中执行此操作实际上不会破坏任何内容,但这意味着您已经注册了一个事件处理程序,每次移动时都会一遍又一遍地调用该事件处理程序(并更新 DOM)从一个细胞到另一个细胞。
关于循环内的jquery函数不迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10855285/