2010-10-21 3 views
0

Я пытаюсь добавить класс в мои три строки, если выбран флажок «Выбрать все», но я не могу заставить класс добавления работать (а затем, очевидно, удалить их, если все было отменено), я я использую toggle на каждой отдельной строке для добавления/удаления класса, но не могу заставить его работать для проверки всех.jquery проверить все флажки и добавить класс в строки?

Вот мой стол:

<form> 
<table cellspacing="0" cellpadding="0" class="tablesorter" id="table"> 
    <thead> 
    <tr> 
     <th valign="middle" align="left" class="filebox"><input type="checkbox" id="checkall" name="checkall"></th> 
     <th valign="middle" align="left" class="header filename"><strong>Filename</strong></th> 
     <th valign="middle" align="left" class="header filesize"><strong>Size</strong></th> 
     <th valign="middle" align="left" class="header filedate"><strong>Date</strong></th> 
    </tr> 
    </thead> 
    <tbody class="file"> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox" name="checkbox"></td> 
     <td valign="middle" align="left" class="filename">Search48.png</td> 
     <td valign="middle" align="left" class="filesize">6 KB</td> 
     <td valign="middle" align="left" class="filedate">21/10/2010</td> 
    </tr> 
    <tr> 
     <td valign="middle" align="left" class="filebox"><input type="checkbox" id="checkbox" name="checkbox"></td> 
     <td valign="middle" align="left" class="filename">shopping_trolley48.png</td> 
     <td valign="middle" align="left" class="filesize">3 KB</td> 
     <td valign="middle" align="left" class="filedate">21/10/2010</td> 
    </tr> 
    </tbody> 
</table> 
</form> 

Вот мой JQuery код:

//check all checkboxes 
$("#checkall").click(function() { 
    $(this).parents("#table:eq(0)").find(":checkbox").attr("checked", this.checked); 
}); 

//add highlight to tr 
$("#checkbox").click(function() { 
    $(this).parent().parent().toggleClass("highlight"); 
}); 

ответ

2

Вы не можете использовать идентификатор здесь, так как это повторяется, вместо того, чтобы использовать класс как class="checkbox" вместо id="checkbox", как это :

$("#checkall").change(function() { 
    $(this).closest("table").find(":checkbox").attr("checked", this.checked).change(); 
}); 

$(".checkbox").change(function() { 
    $(this).closest('tr').toggleClass("highlight", this.checked); 
}); 

You can test it out here. Также обратите внимание на использование change вместо click, поэтому правильное состояние, использование closest() для получения ближайшего родителя этого селектора и вызов .change() во всех меняющихся флажках, чтобы их класс строк был обновлен правильно.

+0

спасибо, но это не добавление новых классов для строк по проверке всех – SoulieBaby

+1

@Soulie - вы добавить '.Кнопкой()' на второй строке в моем коде выше? :) Проверьте демо, чтобы увидеть, как он работает. –

+0

и я также получаю сообщение об ошибке «too much recursion» – SoulieBaby

Смежные вопросы