2013-01-03 83 views
1

我在表TR TD中有一個輸入複選框。我陷在TR上點擊做stuff_1,但如果我點擊複選框,我想這樣做stuff_2(而不是stuff_1):TR表內部的測試複選框

HTML:

<table> 
<TR class="tr"> 
<TD><INPUT TYPE="CHECKBOX" class="checkbox"></TD> 
<TD> Click me 1 to expand</TD> 
</TR> 

<TR class="tr"> 
<TD><INPUT TYPE="CHECKBOX" class="checkbox"></TD> 
<TD> Click me 2 to expand</TD> 
</TR> 
</table> 

JQUERY:

$(".tr").click(function(){ 
    //Here I would like to do STUFF_1 

}); 

$(".checkbox").change(function() { 
    //Here I would like to do STUFF_2 

}); 

但是,每次我點擊複選框,它都會出現STUFF_1 .... 我該如何解決這個問題?

回答

3

你可以這樣做:

$(".checkbox").click(function(e) { 
    e.stopPropagation(); 
    // do your stuff 
}); 

Demonstration

+3

它還可以防止默認操作。單獨明確停止傳播可能會更好,而不是兩者兼而有之。 –

+0

事實上,如果阻止了默認操作,至少在Firefox上([fiddle](http://jsfiddle.net/escnf/)),複選框不會改變點擊狀態。 –

+0

@dystroy:謝謝你這個有用和實用的答案。我不是JQUERY的男人...... – Zamboo

0

嘗試以下操作:

$(".tr").click(function(e){ 
    if(e.target.nodeName == "INPUT") return false; 
    // do stuff 1  
}); 

$(".checkbox").change(function() { 
    // do stuff 2  
});