在jQuery中收听所有孩子的所有onClick事件

时间:2013-05-27 13:18:57

标签: event-handling jquery

我可以使用类似

之类的东西听取div的所有mrow click事件
$('#mydiv').on('click', 'mrow', function() {
    var moo = $(this).attr('id');
    if (handlers[id]) {
        event.stopPropagation();
        handlers[id]();
}

我是否可以使用类似的设置来侦听所有所有 div的子项的所有点击事件(没有设置,为每种类型分开监听器)?树的某些部分有处理函数,有些则没有,我希望这些请求在div中传播,直到找到有处理程序的那个。

4 个答案:

答案 0 :(得分:40)

$('#mydiv').on('click', '*', function() {

*将绑定到#mydiv

中的所有元素

演示--> http://jsfiddle.net/Vjwqz/1/

答案 1 :(得分:12)

对于所有后代:

$('#mydiv').on('click', '*', function() {...});

对于直系后代:{javascript中所谓的孩子}

$('#mydiv').on('click', '> *', function() {...});

答案 2 :(得分:1)

我认为你可以离开选择器

$('#mydiv').on('click', function() {
  

selector类型:String用于过滤后代的选择器字符串   触发事件的选定元素。如果选择器为null   或者省略,事件总是在到达所选事件时触发   元件。

http://api.jquery.com/on/

答案 3 :(得分:-1)

参考此http://api.jquery.com/all-selector/

尝试:

$('#mydiv').on('click', '#mydiv *', function() {
var moo = $(this).attr('id');
    if (handlers[id]) {
        event.stopPropagation();
        handlers[id]();
}