将唯一的jQuery事件处理程序委托给子元素

时间:2012-06-21 18:48:16

标签: jquery

Mootools具有以下语法,用于使用不同的事件类型将唯一事件处理程序委派给给定父元素的子元素。 jQuery中是否存在类似的语法?我试图避免为我想要附加元素的每个元素写一个单独的大小写。

$('myElement').addEvents({
    // monitor an element for mouseover
    mouseover: fn,
    // but only monitor child links for clicks
    'click:relay(a)': fn2
});

我对传递的第二个项目更感兴趣,基本上说“如果我点击#myElement里面的一个锚,就调用这个函数。”我可以轻松扩展此列表,以便使用我喜欢的任何事件为其他孩子添加更多独特的事件处理程序。

1 个答案:

答案 0 :(得分:4)

我能想到的最接近的是on()

$('#myElement').on('mouseover', 'a', function(){
        // do something when an a element within the '#myElement' element is moused-over
    });

还有delegate(),其实现方式大致相同,但使用的语法略有不同:

$('#myElement').delegate('a', 'mouseover', function(){
    // do something when the 'a' within the '#myElement' element is moused-over
});

JS Fiddle demo

参考文献: