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

时间:2012-03-18 20:59:02

标签: jquery twitter-bootstrap javascript-events keyup

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

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

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

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

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:41)

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

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

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

答案 1 :(得分:11)

这对我有用:

$(document).on('keyup', '#YourInputFieldId', function () {
    //stuff happens
});