绑定(keyup)到jQuery中的动态元素(Twitter Bootstrap + typehead)

Jea*_*ray 13 jquery twitter-bootstrap keyup jquery-events

我想你们中的一些人必须皱起眉头读这个标题呃?我相信人们每次都会问这个问题,但是,我还没有看到我的特殊问题,我正在努力!将事件绑定到动态创建的元素是我的kryptonite,我只是无法绕过它...

好吧,我正在使用带有typehead()插件的Twitter Boostrap.我正在使用这个技巧使其与远程数据源一起工作.此时,一切正常.我单击表单中的文本输入,为其标记,脚本将加载外部源并显示下拉列表.但我有动态元素创建,你已经想到,它只是不会对它们起作用.我正在探索live()方法,但看看脚本被解雇的"方式",我只是不确定如何实现它.

$('#anInputField').typeahead().on('keyup', function(ev){
 // stuff happens
});
Run Code Online (Sandbox Code Playgroud)

每次有密钥时,脚本都会触发一个jSON请求,检查他的东西,并将结果返回给执行作业自动完成部分的typehead().那么我怎么能说jQuery来看看初始绑定后创建的#aDropdownID呢?我继续检查我是否可以使用live(),但是因为on()替换它...我很无能为力!

任何帮助赞赏!

elc*_*nrs 43

为了on()能够委托你必须在一个你知道总是在那里的静态元素上调用它,然后你传递动态元素,如:

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

如果您没有静态父元素,则可以随时使用body.


Mar*_*osa 12

这对我有用:

$(document).on('keyup', '#YourInputFieldId', function () {
    //stuff happens
});
Run Code Online (Sandbox Code Playgroud)