javascript - 连接到 jQuery .toChecklist 上的 change() 事件

标签 javascript jquery

当我尝试使用 jQuery .toChecklist 插件在选择列表上使用 .change() 事件时遇到问题。

我的页面包含许多选择列表,这些列表已使用 jQuery 更改为 CheckLists。

考虑以下 Javascript 片段:

for (var i=0;i<5;i++)
{
  var selectListId = 'selectList' + i;

  // Assume this line represents the outputting on a 
  // standard select list

  // Convert to Checklist
  $("#" + selectListId).toChecklist();
  $("#" + selectListId).change
  (
    function ()
    {
      alert("SelectListId: " + selectListId);
    }
  );
}

对于此循环的每次迭代,我输出一个多选列表,将其转换为 list ,然后添加 .change() 处理程序。

但是,当页面呈现时(在视觉上,一切都很好),从任何列表中选择一个选项都会给出“SelectListId:selectList4”的警告文本(即循环的最后一个列表 ID)。因此,似乎每次调用 .change() 都会全局替换更改处理程序。

有谁知道如何更改代码以便每个 list 都有自己的更改处理程序(这样第一个更改处理程序将输出“SelectListId:selectList0”等)。

谢谢,

最佳答案

尝试将 change 函数拉出循环。我还添加了一行,为每个列表添加一个类。新的更改函数按类引用列表,并且会知道哪些正在通过 this 主动更改。

for (var i = 0; i < 5; i++) {

    var selectListId = 'selectList' + i;

    $("#" + selectListId).toChecklist();
    $("#" + selectListId).addClass('newChecklist');
}

$('.newChecklist').change(function() {
    alert( $(this).attr('id') );
});

关于javascript - 连接到 jQuery .toChecklist 上的 change() 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182816/

相关文章:

jQuery : how to intersect two data-attribute selector queries

events - 设置事件后运行事件函数

javascript - AngularJs:编译 ng-switch 时出错

javascript - 如何处理 .xhtml 页面中 javascript 中的 < 和 > 符号?

javascript - Jquery-UI 的 _render 函数在自动完成中不起作用

jquery - window.location.hash - 停止在 Chrome 中重新加载

php - 使用jquery刷新包含php代码的div时出现问题

javascript - 从 html 页面的 url 获取文档对象

javascript - 将多个变量传递到 jquery 对话框表单

javascript - 在 javascript/jquery 中重复特定时间后添加 div 标签