当我尝试使用 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/