2013-01-05 54 views
0

我有一個大的矩形父div,裏面有很多子div。我有一個on(click)函數,它在父div被點擊時運行,但是默認情況下,它也會在父div中的任何內容被點擊時運行(包括子項)。jQuery - on()函數當一個div被點擊時,但不是當該div的孩子被點擊時

但是,我不希望on(click)函數在單擊父項的一個特定子項時運行。我該如何做一個選擇器,選擇父div以及除了這個孩子之外的所有東西?

感謝

<div class="box""> 

<div class="overlay"><div id="text"></div></div> 
<div class="slide"> 
    <div class="slideleft"></div> 
    <div class="slideright"> 
     <span class="upvote">Upvote</span> 
     <span class="counter"></span> 
    </div> 
</div> 

</div> 

現在,這一切中的「盒子」的div,你可以看到發生了什麼here演示。如果您在點擊一個盒子後點擊了upvote按鈕,那麼這個東西就會滑回去,我不希望它。這是我想現在就用這個​​代碼,但它不工作:

$("body").on("click", ".box", function(e){ 
     if(e.target.class == 'upvote') { 
      return false; 
     } else { 
       $(this).children('.slide').slideToggle(150); 
       $(this).children('overlay').css('background-color', 'rgba(0,0,0,0)'); 
      } 
}); 
+2

考慮在這裏發佈你的代碼,它很si然後mpler幫你​​。但對於你的問題,看看:不是選擇器... – jtheman

回答

3

Working Fiddle

$("body").on("click", ".box", function (e) { 
if (e.target.className != 'upvote') { 
    $(this).children('.slide').slideToggle(150); 
    $(this).children('.overlay').css('background-color', 'rgba(0,0,0,0)'); 
} 
}); 
+0

謝謝,你的小提琴正是我正在尋找!然而,它似乎並沒有在我的代碼上工作(添加到OP),你介意看看它嗎?謝謝 – Taimur

+1

@Taurur看到我編輯的答案! –

+0

非凡,謝謝! – Taimur

1

你可以做這樣的:

$('.child').on('click', function(e){ 
    e.stopPropagation(); 
}); 

Demo

+0

爲什麼綁定第二個處理程序只是爲了防止它? – Mathletics

+0

替代上一個答案。 – Sparkup

相關問題