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

标签 jquery-mobile jquery

我有一个 Jquery Mobile shell 页面,我正在使用 Ajax 将表单加载到其中。该表单有一些复选框,我需要绑定(bind)到它们。

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

$('input[name="ohneiln"]').on('change', function() {
   alert("hello");
   });

但是当我尝试将监听器设置为 $(document) 并委托(delegate)给 checkbox 时,监听器永远不会触发:

$(document).on('change', 'input[name="ohneiln"]', function() {
   alert("hello");
});

问题:
使用 $(document).on() 通过 Ajax 加载的“动态”元素设置事件绑定(bind)的正确方法是什么?对于 change 事件来说这是不可能的吗?或者为什么我会遇到麻烦?

感谢您的帮助!

最佳答案

.on() 方法的工作方式会根据您的使用方式而变化。在第一个示例中,.on() 方法的行为与 bind 类似,并且仅适用于已存在的元素。

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

阅读文档以获取详细说明 http://api.jquery.com/on/

关于jquery-mobile - 如何对通过 Ajax 拉入的元素使用 Jquery document.on()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10864683/

相关文章:

jquery mobile动态注入(inject)页面

jQuery 2.0 放弃了对 IE6/7/8 的支持,那么 1.x 分支会维持多久呢?

javascript - JQuery .done 在点击事件上

javascript - jQuery Mobile - 面板问题 - 第二次单击时未打开

jquery - 删除 ol 中的行后点

javascript - jquery .find 回调

c# - 在 jQuery 中,如何在不显示和显示表(或其视觉等效项)之间设置动画?

javascript - 包装 jQuery 函数

Javascript replace( ) 函数在同一图像上运行多次

css - 将复选框标签的大小调整为网格列大小