<div class="parent">
<div class="child1" >
</div>
<div class="child2">
</div>
</div>
<a class="btn1">customClick.btn1</a>
<a class="btn2">customClick.btn2</a>
的JavaScript:
jQuery('div.child1')
.bind('customClick.btn1', function() {
alert('child1 reacted to customClick.btn1');
});
jQuery('div.child2')
.bind('customClick.btn2', function() {
alert('child2 reacted to customClick.btn2');
});
jQuery('div.parent')
.bind('customClick.btn1', function (e) {
alert('parent reacted to customClick.btn1');
})
.bind('customClick.btn2', function (e) {
alert('parent reacted to customClick.btn2');
});
jQuery('a.btn1')
.click(function(){
jQuery('div.child1').trigger('customClick.btn1');
});
jQuery('a.btn2')
.click(function(){
jQuery('div.child2').trigger('customClick.btn2');
});
當我點擊a.btn1
,正如所料,customClick.btn1
事件被div.child1
處理,而不是div.child2
。不期望的是customClick
事件會觸發div.parent
上的處理程序customClick.btn1
和customClick.btn2
。這是正確的嗎?有沒有辦法讓自定義事件與他們的命名空間泡泡?換句話說,當customClick.btn1
被觸發時,並不是所有的customClick
的父處理程序都被處理,只有那些處理customClick.btn1
的處理程序。
我認爲你需要從你的選擇器中去掉'#content',因爲在你的例子中沒有這個id的元素。這裏演示 - http://jsfiddle.net/HUALM/1/ – 2010-08-16 22:24:34
對不起,#內容甚至不需要在那裏。我的壞 – 2010-08-16 23:15:11
fyi我從選擇器字符串中刪除了#content – 2010-08-16 23:15:34