Javascript jquery事件命名空间冒泡问题

Javascript jquery事件命名空间冒泡问题,javascript,jquery,Javascript,Jquery,在开发jQuery插件时,我偶然发现了事件名称空间的问题 这是html <div class="parent"> <div class="child"> </div> </div> <a class="btn-a">trigger a</a> <a class="btn-b">trigger b</a> <a class="btn-c">trigger c</a&g

在开发jQuery插件时,我偶然发现了事件名称空间的问题

这是html

<div class="parent">
    <div class="child">
    </div>
</div>

<a class="btn-a">trigger a</a>
<a class="btn-b">trigger b</a>
<a class="btn-c">trigger c</a>
总之,我将一个带名称空间的事件侦听器附加到子事件和父事件,并创建了三个按钮来触发每个事件(a.a、a.b、a.c)。请注意,父级仅侦听a.b和a.c。当我单击在子级上触发a.a的按钮时,仅会触发a.a的div.child侦听器,但整个“a”命名空间事件会冒泡到div.parent侦听器a.b和a.c,并触发它们。我的问题是,我如何仍然使用事件名称空间,但只让预期的事件冒泡出现(即a.a是为子级和父级触发的唯一事件)。我知道停止传播和立即传播。我不想把这些放在孩子a.b和a.c的听众身上,因为有时我确实希望他们出现泡沫。例如,当我在子对象上触发“a.b”时,我希望子对象和父对象都会处理“a.b”事件,并且只处理“a.b”事件


谢谢

从这个问题上我不能完全确定,但这似乎是你想要的行为:

名称空间在事件之后,而不是之前,因此格式为
event.namespace
。如果您在代码周围交换它们会产生预期的效果,至少我认为这是您最期望的,因为我可以从以下问题中看出:

jQuery('#content div.child')
    .bind('a.a',function(){alert('a-child');})
    .bind('b.a',function(){alert('b-child');})
    .bind('c.a',function(){alert('c-child');});
jQuery('#content div.parent')
    .bind('b.a',function(){alert('b-parent');})
    .bind('c.a',function(){alert('c-parent');});
jQuery('a.btn-a')
    .click(function(){
         jQuery('#content div.child').trigger('a.a');
     });
jQuery('a.btn-b')
   .click(function(){
       jQuery('#content div.child').trigger('b.a');
   });
jQuery('a.btn-c')
    .click(function(){
        jQuery('#content div.child').trigger('c.a');
    });​

谢谢尼克,就是这样。我看到了文档,但没有连接到我的文档。
jQuery('#content div.child')
    .bind('a.a',function(){alert('a-child');})
    .bind('b.a',function(){alert('b-child');})
    .bind('c.a',function(){alert('c-child');});
jQuery('#content div.parent')
    .bind('b.a',function(){alert('b-parent');})
    .bind('c.a',function(){alert('c-parent');});
jQuery('a.btn-a')
    .click(function(){
         jQuery('#content div.child').trigger('a.a');
     });
jQuery('a.btn-b')
   .click(function(){
       jQuery('#content div.child').trigger('b.a');
   });
jQuery('a.btn-c')
    .click(function(){
        jQuery('#content div.child').trigger('c.a');
    });​