循环内的jquery函数不迭代

标签 jquery iteration

我的代码有问题,title 属性仅显示 16,而不显示从 115 的所有值。为什么会这样,谁能建议我做错了什么???

我的代码

 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/

相关文章:

c - 在迭代中打破条件

R data.table 按两列分组和迭代

Python/NumPy : implementing a running sum (but not quite)

php - FullCalendar - 如何根据日历上数据库(mysql)表行的逗号分隔日期显示事件

javascript - 如何访问扩展程序中的书签页面和其他 Chrome 网址?

jquery - Cordova 控制台插件在页面加载后停止工作

javascript - Backbone 与 Rails 中的模型混搭同步

jquery - 根据输入动态创建多个不同高度的<section>

Ruby:一次从一个字符串和两个数组值构建哈希

python - 从 API 将数据写入数据帧时失败