为什么
$(document).on("keyup blur", "#my_selector", function() {
//DO SOMETHING
});
似乎有效,但是
$("#my_selector").on("keyup blur", function() {
//DO SOMETHING
});
不?我把它们都放在我准备好的功能中,虽然上面的功能有效,但下面的功能却没有。这是我的previous question。
的背景答案 0 :(得分:3)
如果#my_selector
项是动态添加的(例如在Ajax调用完成后),那么您可能会在元素存在于DOM之前附加direct
事件处理程序。在这种情况下,事件处理程序将不附加任何内容。第一个附加一个delegated
事件处理程序,因此当元素出现在DOM中时无关紧要,事件处理程序将被执行。
答案 1 :(得分:1)
$('selector').on('event')
就像$ .bind一样
$(document).on('event', 'selector')
的作用类似于$ .live。
换句话说,$('selector').on
将事件处理程序附加到当前存在的节点。
如果在创建事件处理程序时$('#my_selector')
为空,则不会将事件处理程序附加到它。
另一方面,$(document)
始终可用,您始终可以将事件处理程序附加到其中
$(document).on('event', 'selector', function() { ... })
附加一个事件处理程序来通过'selector'来记录和过滤它。所以这在jQuery的早期版本中就像$().live()
一样,你应该以这种方式使用事件绑定。