2011-10-28 40 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?顯示所有已檢查的值並刪除TR

活生生的例子:http://jsfiddle.net/RYrA4/1/

回答

3

選擇相應的元素,然後選擇父tr秒和最終刪除它們: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(); 
}) 

你可以做一個「每個」循環,如果你想實現更多,改變的東西:)

+0

+ 1用於'.parents(「tr」)'更優雅。 – pimvdb

+0

謝謝,我如何顯示警報所有選中的值? –

2

jQuery的closest方法找到最近的標籤由選擇器在當前元素處開始並沿着樹向上進行定義:

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

該空間使它成爲後代選擇器。 – pimvdb

+0

@pimvdb - 是的,修正了錯字。 –

+0

謝謝,我如何顯示警報所有選中的值? –

1

是否希望顯示每個選中的複選框的提醒或一個提醒就足夠了?對於個別提醒:

$("#delete").click(function() 
{ 
    var allCheckBoxes = $("input:checkbox[name='yes[]']"), 
    selectedCheckBoxes = allCheckBoxes.filter(":checked"), 
    unselectedCheckboxes = allCheckBoxes.not(":checked"); 
    unselectedCheckboxes.closest("tr").remove(); 
    selectedCheckBoxes.each(function() 
          { 
           alert(this.value); 
          }); 

} 

對於單個警報,我們可以在「每個」功能中創建逗號分隔的字符串,然後提醒它。