Keyup模糊功能

时间:2013-08-02 11:47:57

标签: javascript jquery

为什么

$(document).on("keyup blur", "#my_selector", function() {
    //DO SOMETHING
});

似乎有效,但是

$("#my_selector").on("keyup blur", function() {
    //DO SOMETHING
});

不?我把它们都放在我准备好的功能中,虽然上面的功能有效,但下面的功能却没有。这是我的previous question

的背景

2 个答案:

答案 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()一样,你应该以这种方式使用事件绑定。