14

我想你们中的一些人看到这个标题一定皱起了眉头吧?我敢肯定人们每次都会问这个问题,但是,我还没有看到我的特定问题,所以我正在尝试!将事件绑定到动态创建的元素是我的氪石,我就是无法绕开它......

好吧,我正在使用带有typehead()插件的 Twitter Boostrap。我正在使用这个技巧使其与远程数据源一起工作。在这一点上,一切正常。我单击表单中的文本输入,为其标记,然后脚本会加载外部源并出现下拉列表。但是我有动态元素创建,你已经想到,它对它们不起作用。我正在探索该live()方法,但是看着脚本“如何”被触发,我只是不确定如何实现它。

$('#anInputField').typeahead().on('keyup', function(ev){
 // stuff happens
});

每次有 keyup 时,脚本都会触发一个 JSON 请求,检查他的东西,并将结果返回给typehead()谁来完成这项工作的自动完成部分。那么如何让 jQuery 查看初始绑定后创建的#aDropdownID 呢?我继续检查我是否可以使用live(),但自从on()替换它......我一无所知!

任何帮助表示赞赏!

4

2 回答 2

45

为了on()能够委托,您必须在您知道将始终存在的静态元素上调用它,然后传递动态元素,例如:

$('#static-parent').on('keyup', '#aDropdownID', function(ev){
 // stuff happens
});

如果您没有静态父元素,那么您始终可以使用body.

于 2012-03-18T21:03:24.820 回答
13

这对我有用:

$(document).on('keyup', '#YourInputFieldId', function () {
    //stuff happens
});
于 2013-11-12T16:52:42.840 回答