我猜你们中的一些人必须皱起眉头读这个标题呃?我相信人们每次都会问这个问题,但是,我还没有看到我的特殊问题,我正在努力!将事件绑定到动态创建的元素是我的kryptonite,我只是无法绕过它...
好吧,我正在使用带有typehead()插件的Twitter Boostrap。我正在使用this trick使其与远程数据源一起使用。此时,一切正常。我单击表单中的文本输入,为其标记,脚本将加载外部源并显示下拉列表。但我有动态元素创建,你已经想到,它只是不会对它们起作用。我正在探索live()方法,但是看看脚本被触发的“方式”,我只是不确定如何实现它。
$('#anInputField').typeahead().on('keyup', function(ev){
// stuff happens
});
每次有一个keyup,脚本都会触发一个jSON请求,检查他的东西,并将结果返回给执行作业自动完成部分的typehead()。那么我怎么能说jQuery来看看初始绑定后创建的#aDropdownID呢?我继续检查我是否可以使用live(),但是因为on()取代它...我很无能为力!
任何帮助表示赞赏!
答案 0 :(得分:41)
对于on()
能够委派你必须在一个你知道总是在那里的静态元素上调用它,然后你传递动态元素,如:
$('#static-parent').on('keyup', '#aDropdownID', function(ev){
// stuff happens
});
如果您没有静态父元素,则可以始终使用body
。
答案 1 :(得分:11)
这对我有用:
$(document).on('keyup', '#YourInputFieldId', function () {
//stuff happens
});