HTML:JQuery пространства имен не пузырь, который пользовательское событие
<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' из ваших селекторов, поскольку в вашем примере нет элемента с этим идентификатором. Демо здесь - http://jsfiddle.net/HUALM/1/ –
извините, #content даже не нужно быть там. my bad –
fyi i удален #content из селекторных строк –