我知道這個問題已被問了幾次,但我似乎無法得到這個工作。當孩子點擊時,我不希望父事件發生。我有以下幾點:點擊子元素觸發父級點擊事件
<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