2012-06-21 36 views
1

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

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

我传递,这基本上是说更感兴趣的是第二项“如果我在一个锚点击#myElement内,调用这个函数。”我可以轻松地在这个列表上扩展,以便使用我想要的任何事件向其他孩子添加更多独特的事件处理程序。

回答

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

参考文献:

+0

谢谢大卫。我最终做了你的JS小提琴中的东西。我只是希望jQuery有一个类似简洁的语法,所以我可以在一个代码块中做更多的事情,但是很好。 :) –

+0

你非常欢迎;我很高兴得到了帮助!如果你认为你的问题得到解答,那么[接受你认为最有用的答案]将是一种好的形式(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。如果你的问题*没有被回答,但是,不要被迫接受。 –

+0

@BradAzevedo。喂喂,不要忘了接受答案,如果它帮助你。 – gdoron

相关问题