2011-09-03 31 views
0

我有一個DOM結構sometihng像這樣(我不想顯示其他TD的,因爲人滿爲患):需要使用jQuery的複選框幫助設置

<table> 
<tr><td><input type="checkbox" name="checkbox1" class="rowSelectCheckbox"></td></input></tr> 
<tr><td><input type="checkbox" name="checkbox2" class="rowSelectCheckbox"></td></input></tr> 
<tr><td><input type="checkbox" name="checkbox3" class="rowSelectCheckbox"></td></input></tr> 
<tr><td><input type="checkbox" name="checkbox4" class="rowSelectCheckbox"></td></input></tr> 

</table> 

<input type="checkbox" name="checkbox_select" id="lastCheckbox"></input> 

我試圖做的是設置的最後一個複選框,以檢查是否其他複選框的任何(複選框1,複選框2等id),否則如果全部其他複選框未選中,也可以將此最後一個複選框也取消選中。

回答

0

試試這個:

$('.rowSelectCheckbox').change(function() { 
    $('.rowSelectCheckbox').each(function() { 
     if ($(this).prop('checked')) { 
      $('#lastCheckbox').prop('checked', true); 
      return false; 
     } 

     $('#lastCheckbox').prop('checked', false); 
    }); 
}); 

小提琴:http://jsfiddle.net/B78vP/

+0

感謝隊友,我在你提供的鏈接上看到了它。它像一個魅力。 – menislici

+1

不要揍你下來,但循環通帶'什麼.rowSelectCheckbox'是那種有點浪費:/你只需要檢查是否.rowSelectCheckbox'的'一個被選中(而不是全部) – jacob

0

你應該做這樣的事情:

$('.rowSelectCheckbox').change(function() { 
    flag = false; 
    $('.rowSelectCheckbox').each(function() { 
     if ($(this).is(':checked')) { 
      flag = true; 
     } 
    });  
    $('#lastCheckbox').prop('checked', flag); 
}); 

現場演示這裏:http://jsfiddle.net/nayish/teXHe/

+0

它似乎並沒有被工作出於某種原因...其實這似乎對我來說太複雜,雖然我絕望的這個片段 – menislici

+0

編輯答案,我是有錯之前,當所有的複選框被檢查才做。現在應該工作:) – Nayish

+0

是的,只是檢查了演示。完美的作品。謝謝。 – menislici

0

快速,如果測試應這樣做:

$("input.rowSelectCheckbox").change(function(){ 
    if ($("input.rowSelectCheckbox:checked")) { //include "rowSelectCheckbox" so id=lastCheckbox doesn't trip the test 
     $("input#lastCheckbox").attr("checked"); 
    } 
    else 
     $("input#lastCheckbox").removeAttr("checked"); 
    } 
}); 

一個循環,如。每個(),是不必要的,因爲你僅當(任何)的input.rowSelectCheckbox一個檢查保養。這將返回true第一次遇到被檢查的<input class="rowSelectCheckbox" />

0

以下的jQuery應該做的伎倆

$(document).ready(function() { 
    $(".rowSelectCheckbox").click(function() { 
     var numChecked = $(".rowSelectCheckbox").filter(":checked").length; 

     if(numChecked > 0) 
     { 
      $("#lastCheckbox").prop("checked", "checked"); 
     } 
     else 
     { 
      $("#lastCheckbox").prop("checked", false); 
     } 
    }); 
}); 

點擊其中的任何一個時,這將計算選中的複選框的數量和,如果該數字大於0,則檢查表格外的最後一個複選框。

有一個工作示例here

1

一個小挑剔:收盤的</td>標記之前</input>標籤所屬。

否則,它是非常簡單的。

$(".rowSelectCheckbox").click(function(){ 
    var lastCheckbox = $("#lastCheckbox"); 
    if $(".rowSelectCheckbox:checked").length) { 
     lastCheckbox.attr("checked", "checked"); 
    } else { 
     lastCheckbox.removeAttr("checked"); 
    } 
}); 
+0

哎呀沒有看到。 – menislici