2013-12-13 5 views
4

У меня есть родительский элемент DIV, в котором есть дочерние элементы div. У меня есть отдельные реализации щелчка для родителя и его дочерних элементов.Нажмите событие в родительском и дочернем объектах

<div id="mainContainer"> 

    <div id="childContainer">  
    </div> 

    <div id="childContainer2"> 
    </div> 

</div> 

$('#mainContainer').click(function() { 

     console.log('main container'); 

    }).children().click(function() { 
     console.log('childen'); 
     return false; 
    }); 

    $('#childContainer2').click(function() { 

     console.log('child container 2'); 

    }); 

Это прекрасно работает. но если я нажму на дочерний элемент, тогда событие будет выполняться дважды, и именно так оно и должно работать. Мой вопрос: существует ли способ, который я могу явно записать событие родительскому, которое не повлияет на детей, чтобы дети не могли дважды выполнять функцию щелчка?

+0

Извините, вы можете еще раз объяснить, что вам нужно –

+0

Каков ваш ожидаемый результат http://jsfiddle.net/arunpjohny/hF6L9/1/ –

+2

Вы привязываете два обработчика событий ко второму ребенку. Вы только хотите запустить один из них, и если да, то какой? Возможно, вы ищете 'event.stopImmediatePropagation': http://api.jquery.com/event.stopImmediatePropagation/. –

ответ

5

да вы можете просто, изменить порядок связывания событий и прекратить использование РАСПРОСТРАНЕНИЕ stopImmediatePropagation

рассмотреть этот fiddle

$('#childContainer2').click(function (e) {  
     alert('child container 2'); 
     e.stopImmediatePropagation() 
    return false; 
    }); 
$('#mainContainer').click(function() { 
alert('main container'); 

    }).children().click(function (e) { 
     alert('childen'); 
     return false; 
    }); 
2

Вы можете использовать использовать event.stopPropagation:

children().click(function (e) { 
    e.stopPropagation(); 
    console.log('childen'); 
    return false; 
}); 

предотвратить Buble событий до

2

Оба return false; & event.stopPropagation прекращает распространение события родительскому объекту.

Адрес demo fiddle.

Смежные вопросы