2012-03-15 9 views
3

<tr>をクリックすると、うまく動作するダイアログが表示されます。しかし、この中に<tr>私は、ダイアログボックスを開くことなく、それらをクリックするために必要な入力チェックボックスがあります。これはどのように可能ですか?Jqueryの.clickイベント

$('#messageContainer tr').click(function() { 
    var masterMessageID = $(this).attr('messageID'); 
    var replyToID = $(this).attr('replyToID'); 

    buildDialog(this.id, masterMessageID, replyToID); 
    $(this).removeClass('messageNew'); 
}); 

HTML:

<tr replytoid="3" messageid="7078" id="16"> 
    <td>&nbsp;&nbsp;<input type="checkbox" name="checkAll"></td> 
    <td>John Doe</td> 
    <td>sdfsdf</td> 
    <td>3/14/2012 1:29:47 PM</td> 
</tr> 

答えて

6

をチェックするために.is(':checkbox')からの変更:

$('#messageContainer tr :checkbox').click(function(e){ 
    e.stopPropagation(); 
}); 
+0

イベントをバブリングするのにうまくいきますか?イベントがバブルダウンした場合は、最初にtrをクリックしないでください。 –

+0

@SKSイベントはバブルアップではなく、バブルアップです。 –

+0

@リチャードD http://www.quirksmode.org/js/events_order.html –

0

編集:クリックの伝播を停止e.target.type

DEMO

$('#messageContainer tr').click(function (e) { 
    if (e.target.type && e.target.type == 'checkbox') { 
     e.stopPropagation(); //stop bubbling 
     return; 
    } 

    var masterMessageID = $(this).attr('messageID'); 
    var replyToID = $(this).attr('replyToID'); 

    buildDialog(this.id, masterMessageID, replyToID); 
    $(this).removeClass('messageNew'); 
}); 
+0

または単に '.NOT(...)' – Alnitak

+0

@Alnitak私は(.NOTみました)が、それは正常に動作させることができませんでした。 –

+0

@JamesWilson私はGuffaがより良い解決策を持っていると思います。追加のハンドラが必要ない場合は、上記の私の編集を参照してください。 –

1

あなたはこのコードを追加することができます

$('#messageContainer tr input:checkbox').click(function (e) { 
    e.stopPropagation(); 
}); 

これはTRまで伝播するのチェックボックスをクリックして停止します。

例 - http://jsfiddle.net/U5LBR/1/

0

チェックこの

チェックボックスにするevent.stopPropagationを()を追加します。イベントのバブリングを停止します。

$('#messageContainer tr').click(function() { 
$('#popup').toggle(); 
}); 

$('#messageContainer input[type="checkbox"]').click(function(e){ 
alert('Checked'); 
e.stopPropagation(); 

}) 

http://jsfiddle.net/JLDzq/1/

+0

私はバブリングにあまり慣れていません。最初に、 'e.stopPropagation();'を追加するだけの答えがありますか?良いか悪いか? –

+0

最初の答えは同じことをしています。 –