jQuery元素在AJAX之后单击
我的项目有一个使用jQuery UI选项卡的页面。每个选项卡使用AJAX调用一个文件,每个选项卡都显示一个列表。这些列表中的每个jQuery元素在AJAX之后单击,jquery,ajax,checkbox,html-lists,jquery-ui-tabs,Jquery,Ajax,Checkbox,Html Lists,Jquery Ui Tabs,我的项目有一个使用jQuery UI选项卡的页面。每个选项卡使用AJAX调用一个文件,每个选项卡都显示一个列表。这些列表中的每个元素都有一个子元素,如 我需要的是,当我单击上的任意位置时,选中或取消选中复选框元素(取决于其以前的状态) 我尝试过使用这样的函数,,效果很好,直到用户尝试单击实际的复选框。然后,该函数与复选框的操作同时运行,导致它们相互取消 我尝试在$(document).ready()上使用类似版本的函数,以排除启动此函数的复选框子项,但列表是使用AJAX创建的,并且没有初始DOM
元素都有一个子元素,如
我需要的是,当我单击
上的任意位置时,选中或取消选中复选框
元素(取决于其以前的状态)
我尝试过使用这样的函数,$(document).ready()
上使用类似版本的函数,以排除启动此函数的复选框子项,但列表是使用AJAX创建的,并且没有初始DOM的一部分。该功能不起作用。我尝试使用click
而不是on()
,因为根据它的说法,“on()方法将适用于当前和未来的元素(如脚本创建的新元素)。”我没有成功
后一种尝试是这样的:
$("li.single-line.restore-manager").on("click", function () {
//code
}).children('input[type="checkbox"]').click(function (e) {
return false;
});
实际上什么也没发生
关于如何实现这一点有什么想法吗?更新代码以处理复选框单击:
$(document).on("click", 'li.single-line.restore-manager', function(e){ // Use document or parent of li which exists before `AJAX` call
if (e.target.nodeName != 'INPUT') {
// your code here
}
});
这就是你要找的吗
$(document).on("click", "li.single-line.restore-manager", function (e) {
if (e.target.nodeName != "INPUT") {
var myChks = $(this).children(":checkbox");
$.each(myChks, function () {
if ($(this).is(":checked") === true) {
$(this).prop("checked", false);
} else {
$(this).prop("checked", true);
}
});
};
});
不能解决您的问题,但当您运行自定义函数时,单击“检查”或“取消”即可。啊,我明白了,关键是这一部分:直到用户尝试单击实际的复选框。然后,该函数与复选框的操作同时运行,导致它们相互取消。我现在正在摆弄它。:)这个确实管用!非常感谢你的帮助,伙计!:)您可能想在几个不同的浏览器中检查它(cough,即cough)。我不确定IE如何处理
事件.target
。我错误地引用了li
选择器“li.single line.restore manager”
,正确的代码是“li.single line.restore manager”
,答案已更新