Javascript $(document).on()仅适用于一个动态元素,如何修复此问题?

Javascript $(document).on()仅适用于一个动态元素,如何修复此问题?,javascript,jquery,dom,Javascript,Jquery,Dom,这是我关于Stack的第一个问题,尽管我多年来一直是Stack的粉丝。请容忍我,我希望我的问题是清楚的 我正在使用以下代码: $(document).on("click", "#checkbox img", function () { // object var checkbox = $(this).next("input[type=checkbox]"); // check if checked if(checkbox.is(":checked")) {

这是我关于Stack的第一个问题,尽管我多年来一直是Stack的粉丝。请容忍我,我希望我的问题是清楚的

我正在使用以下代码:

$(document).on("click", "#checkbox img", function () {
   // object
   var checkbox = $(this).next("input[type=checkbox]");
   // check if checked
   if(checkbox.is(":checked")) {
       checkbox.prop("checked", false); this.src = "http://imgs.airwalk-design.com/layout/chckno.png";
   } else {
       checkbox.prop("checked", true); this.src = "http://imgs.airwalk-design.com/layout/chckyes.png";
   }
});
这很好用。但是,如果用户关闭表单(它滑出,从DOM中删除),然后打开另一个表单(ajax,插入DOM),则复选框在该表单上不起作用。但是,我可以重新打开第一个表单,并且复选框在该表单上起作用,即使它已被删除并再次追加

有什么建议吗

编辑

麦基的回答/评论对我很有用。我改为使用“#uniqueformid#checkbox img”。

#checkbox

是一个id,因此它只能出现一次,这可能是插入第二个表单时它不起作用的原因。尝试改用一个类。

ID
复选框使用了多少次?使用一个类而不是
的ID。checkbox img
嗯,有两个ID,但一次在DOM中只有一个。表单正在切换。尽管如此,我还是试着换了一门课,但没有成功。我可以成功地在任何复选框上使用代码,但决不能在第二个表单上使用。在创建时为每个表单添加一个小的时间戳或一个小的guid,
“#someid.checkbox img”
Brilliant,这很有效。由于ajax代码在许多不同的表单上使用,所以我使用form=$(newElems);var formId=form.find(“form”).attr(“id”);var specChck=“#”+formId+“#复选框img”;这将用于检测哪个表单加载到DOM中。干杯,伙计,我试过了,没什么。DOM中一次只出现一个id。这有区别吗?