Я знаю, что этот вопрос задан несколько раз, но я не могу заставить его работать. Когда ребенок получает клик, я не хочу, чтобы родительское событие срабатывало. У меня есть следующие:Нажатие дочернего элемента запускает событие родительского щелчка
<div class="tabItem">
<span> Item 1</span>
<div class='contentBody'>Item 2 Body</div>
</div>
И следующий JQuery:
$(document).ready(function() {
$('.tabItem').each(function(index){
$(this).attr('id', 'tabIndex'+index);
var contentDiv = $(this).find('div').first();
var position = contentDiv.position();
var right = $(window).width() - position.left - contentDiv.width() ;
var top = (position.top - 18) ;
var contentId = 'tabContent' + index;
$(contentDiv).css("display", "none").css({top: top, left: 200}).attr('id', contentId);
$(this).on('click', function() {
$(this).removeClass('tabItem').addClass('tabItemSelected');
$(currentTab).removeClass('tabItemSelected').addClass('tabItem');
if($('#' + currentContentBody).is(":visible")){
$('#' + currentContentBody).toggle("slide"); // close the last tab
}
if($(contentDiv).is(":hidden")){
$(contentDiv).toggle("slide");
}
currentTab = $(this);
currentContentBody = $(contentDiv).attr('id');
});
});
});
Клик событие для родителей с классом tabItem
. Но когда я нажимаю дочерний div, родительские файлы событий. Вот рабочий пример jsfiddle
Пройдите ответ http://stackoverflow.com/a/6945909 – Satpal
Вы всегда щелкаете ребенком, так как текст находится внутри пролетов. – adeneo
Функция должна быть прикреплена к элементу span не всему контейнеру: '' $ (this) .find ('span'). On ('click', function (e) {''. – user2755140