Jquery mobile 如何在通过Ajax拉入的元素上使用Jquery document.on()?

Jquery mobile 如何在通过Ajax拉入的元素上使用Jquery document.on()?,jquery-mobile,jquery,Jquery Mobile,Jquery,我有一个jquerymobileshell页面,我正在使用Ajax将表单加载到该页面中。表单有一些复选框,我需要绑定到这些复选框 奇怪的是,我可以直接在按钮上设置侦听器,如下所示: $('input[name="ohneiln"]').on('change', function() { alert("hello"); }); 但是当我试图将侦听器设置为$(document)并委托给复选框时,侦听器从不触发: $(document).on('change', 'input[name=

我有一个jquerymobileshell页面,我正在使用Ajax将表单加载到该页面中。表单有一些复选框,我需要绑定到这些复选框

奇怪的是,我可以直接在按钮上设置侦听器,如下所示:

$('input[name="ohneiln"]').on('change', function() {
   alert("hello");
   });
但是当我试图将侦听器设置为
$(document)
并委托给
复选框时,侦听器从不触发:

$(document).on('change', 'input[name="ohneiln"]', function() {
   alert("hello");
});
问题:
使用
$(document.on()
)为通过Ajax加载的“动态”元素设置事件绑定的正确方法是什么?这对于
更改
事件是不可能的吗?或者为什么我会遇到麻烦

谢谢你的帮助

方法
.on()
的工作方式会根据您使用它的方式而变化。在第一个示例中,
.on()
方法的行为类似于
bind
,只对已经存在的元素起作用

第二个示例的行为在许多方面类似于
.live()
delegate()
。并将用于以后添加的元素


阅读文档以获得详细解释

您的第二种语法似乎很好,应该适用于动态元素,问题可能出在其他地方。works fine@Esailija-但页面加载时您的输入就在那里。我的不是,它是在用户做了一些操作后通过Ajax拉入的stuff@frequent:使用通过AJAX加载的输入为我工作@频繁,您的第二个代码是针对这些元素的,通过Ajax拉取。感谢您的链接和解释。我想我还是坚持第一个版本。我想你把第一个和第二个例子弄混了。第一个是“直接”,第二个是“委托”。我不知道op是否像我解释的那样把它搞混了。也许这就是我的解释有意义的原因。lol。我更正了解释。而不是$(文档),你不想附加。到最接近的父id上,以提高性能吗?