为什么
$(document).on("keyup blur", "#my_selector", function() {
//DO SOMETHING
});
似乎工作,但是
$("#my_selector").on("keyup blur", function() {
//DO SOMETHING
});
不是吗?我把它们都放在了我准备好的函数中,虽然上面的一个有效,但下面的无效。这是在我之前的问题的背景下。
为什么
$(document).on("keyup blur", "#my_selector", function() {
//DO SOMETHING
});
似乎工作,但是
$("#my_selector").on("keyup blur", function() {
//DO SOMETHING
});
不是吗?我把它们都放在了我准备好的函数中,虽然上面的一个有效,但下面的无效。这是在我之前的问题的背景下。
如果#my_selector
项目是动态添加的(例如,在 Ajax 调用完成之后),那么您可能会direct
在元素存在于 DOM 之前附加事件处理程序。在这种情况下,事件处理程序将不附加任何内容。第一个附加了一个delegated
事件处理程序,因此无论何时元素出现在 DOM 中,事件处理程序都会被执行。
$('selector').on('event')
像 $.bind 一样工作。
$(document).on('event', 'selector')
像 $.live 一样工作。
换句话说,$('selector').on
将事件处理程序附加到当前存在的节点。
如果$('#my_selector')
在创建事件处理程序时为空,则事件处理程序将不会附加到它。
另一方面$(document)
,它始终可用,并且您始终可以将事件处理程序附加到它。
$(document).on('event', 'selector', function() { ... })
将事件处理程序附加到文档并通过“选择器”对其进行过滤。所以这就像$().live()
以前版本的 jQuery 一样工作,你应该以这种方式使用事件绑定。