循环中的jquery函数不迭代

lea*_*ner 2 iteration jquery

我有一个问题,我的代码,该title属性只显示16而不是显示所有值1通过15.为什么这样可以任何人建议我做错了什么?

我的守则

 x=1;
 while(x <= 15)
 {
     $("td#id"+x).mouseover(function(x){
     $(this).attr('title', x)           
   });
   x++;
}
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 9

这是非常常见的 "在回调中使用循环变量"问题.

当您使用jQuery时,最简单的修复是data处理程序的参数:

 var x=1;
 while (x <= 15) {
     $("td#id"+x).mouseover({ x: x }, function(ev) {
         this.title = ev.data.x;        
     });
     x++;
 }
Run Code Online (Sandbox Code Playgroud)

那就是说,你为什么只在mouseover功能中设置它?标题应该直接添加到元素中,只需一次:

for (var x = 1; x <= 15; ++x) {
    document.getElementById('id' + x).title = x;
}
Run Code Online (Sandbox Code Playgroud)

mouseover处理程序中执行此操作实际上不会破坏任何内容,但这意味着您已经注册了一个事件处理程序,每次从一个单元格移动到另一个单元格时,该处理程序将被调用(并更新DOM).