jQuery元素在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

我的项目有一个使用jQuery UI选项卡的页面。每个选项卡使用AJAX调用一个文件,每个选项卡都显示一个列表。这些列表中的每个
  • 元素都有一个子元素,如

    我需要的是,当我单击
  • 上的任意位置时,选中或取消选中
    复选框
    元素(取决于其以前的状态)

    我尝试过使用这样的函数,
  • ,效果很好,直到用户尝试单击实际的复选框。然后,该函数与复选框的操作同时运行,导致它们相互取消

    我尝试在
    $(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”
    ,答案已更新