2011-10-28 15 views
1
<table> 
    <tr><td>aaa</td><td><input type="checkbox" name="yes[]" value="aaa" checked /></td></tr> 
    <tr><td>bbb</td><td><input type="checkbox" name="yes[]" value="bbb" /></td></tr> 
    <tr><td>ccc</td><td><input type="checkbox" name="yes[]" value="ccc" checked /></td></tr> 
</table> 


<span id="delete">delete</span> 

var val = $(input[checkbox]).val(); 
alert(val); 

$('#delete').click(function(){ 
    //here should be delete all TR if input is not checked. how? 
}) 

このチェックボックスのチェックを外した場合、どのようにすべてのTRを削除できますか?すべてのチェックされた値を表示して削除するTR

LIVE例:http://jsfiddle.net/RYrA4/1/

答えて

3

は親にtr Sを選択し、最終的にそれらを削除し、その後、適切な要素を選択:http://jsfiddle.net/pimvdb/RYrA4/3/

$('#delete').click(function(){ 
    $(":checkbox[name='yes[]']:not(:checked)") // select non-checked checkboxes 
     .parent() // <td>s (parents of checkboxes) 
     .parent() // <tr>s (parents of <td>s) 
     .remove(); // remove <tr>s 
}) 
+0

+1のコメントと例 –

+0

ありがとうございました。どのように警告を表示して、すべてのチェック値を表示できますか? –

+1

@Paul Attuck: '.map'を使って要素をその値にマップすることができます:http://jsfiddle.net/pimvdb/RYrA4/6/。 – pimvdb

3

超簡単な方法:

$('#delete').click(function(){ 
    $(":checkbox[name='yes[]']:not(:checked)").parents('tr').remove(); 
}) 

あなたはjQueryのclosest方法は、最寄りのタグを見つけ、あなたがより多くを達成したい場合は、何かを変更:)

+0

'.parents(" tr ")'は+1です。これはよりエレガントです。 – pimvdb

+0

ありがとう、どのように私はすべてのチェック値をアラートで表示することができますか? –

2

を、「各」ループを行うことができます現在の要素から始まり、ツリーを進んでいるセレクタによって定義されます。

$('#delete').click(function(){ 
    $("input:checkbox[name='yes[]']:not(:checked)").closest('tr').remove(); 
}) 
+0

このスペースによって、そのスペースが子孫セレクタになります。 – pimvdb

+0

@pimvdb - うん、入力ミスを修正しました。 –

+0

ありがとう、どのように私はすべてのチェック値をアラートで表示することができますか? –

1

チェックしたチェックボックスごとにアラートを表示するか、1つのアラートで十分ですか?個々のアラートについて:

単一のアラートでは、「各」機能でコンマ区切りの文字列を作成して警告することができます。

関連する問題