无法在 js 生成的复选框上触发复选框单击事件
Unable to trigger checkbox click event on js generated checkbox
一个非常奇怪的问题,但我已经在这个问题上研究了很长时间,现在甚至不能承认,我对此感到非常困惑。所以,这里是:
当我的页面加载时,我有 3 个复选框可用。在左侧的菜单中有几个类别可供选择,单击这些类别中的每一个都会执行一个 $.getJSON 请求,该请求通过将此代码附加到 tbody 来构建新的复选框:
str = '<tr><td><img src="/images/icons/'+icon+'.jpg" alt="'+shrt+'"></td><td>'+labl+'</td><td>'+desc+'<br><span></span></td><td>'+pnts+'</td><td><input type="checkbox" name="status" class="status" '+checked+' id="'+i+'"></td></tr>';
$("#tbody_data").append(str);
现在,在页面加载时生成的第一个页面上(通过 php),我可以通过执行 $("input[type=checkbox]").click(function () { if($(this).prop('checked')) console.log("This Works"); });
检查是否选中了复选框
但是,在我从上面提到的 js 生成一个新的复选框后,我无法执行与上面相同的操作。它没有注意到单击事件,我不知道为什么它不起作用,这让我很烦。即使我执行 $("body").click(yadiyadi) 控制台中也没有任何反应。
提前感谢您提供的任何提示!
正如上面的 Dhiraj 和 randombumper 所提到的那样,它成功了——我尝试只调用 .click,document.body 单击效果非常好。感谢小伙伴们的帮助。
您的 .click() 函数不起作用的原因是因为代码在复选框存在于 DOM 之前被调用,因此无法应用任何处理程序。
对动态创建的内容使用 (document).on("click", "yourSelectorHere", function(){//do stuff});
。
一个非常奇怪的问题,但我已经在这个问题上研究了很长时间,现在甚至不能承认,我对此感到非常困惑。所以,这里是:
当我的页面加载时,我有 3 个复选框可用。在左侧的菜单中有几个类别可供选择,单击这些类别中的每一个都会执行一个 $.getJSON 请求,该请求通过将此代码附加到 tbody 来构建新的复选框:
str = '<tr><td><img src="/images/icons/'+icon+'.jpg" alt="'+shrt+'"></td><td>'+labl+'</td><td>'+desc+'<br><span></span></td><td>'+pnts+'</td><td><input type="checkbox" name="status" class="status" '+checked+' id="'+i+'"></td></tr>';
$("#tbody_data").append(str);
现在,在页面加载时生成的第一个页面上(通过 php),我可以通过执行 $("input[type=checkbox]").click(function () { if($(this).prop('checked')) console.log("This Works"); });
但是,在我从上面提到的 js 生成一个新的复选框后,我无法执行与上面相同的操作。它没有注意到单击事件,我不知道为什么它不起作用,这让我很烦。即使我执行 $("body").click(yadiyadi) 控制台中也没有任何反应。
提前感谢您提供的任何提示!
正如上面的 Dhiraj 和 randombumper 所提到的那样,它成功了——我尝试只调用 .click,document.body 单击效果非常好。感谢小伙伴们的帮助。
您的 .click() 函数不起作用的原因是因为代码在复选框存在于 DOM 之前被调用,因此无法应用任何处理程序。
对动态创建的内容使用 (document).on("click", "yourSelectorHere", function(){//do stuff});
。