2010-05-28 4 views
0

привет, я пытаюсь проверить/снять все флажки, у которых нет класса для них. Это код, который я получил, но он проверяет коробки классов.убрать все флажки, кроме одного с классом?

$(document).ready(function() { 
     $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
     function() { 
     if (!$("input[type='checkbox']").hasClass("testclass")) { 
      $("input[type='checkbox']").attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked')); 
     }}); 
    }); 

любые идеи, в которых я ошибаюсь?

EDIT
Это отстой, но asp.net добавить интервал вокруг входа CheckBox, когда данный CssClass, поэтому сам флажок не получите класс. Я пытался делать то, что вы говорите, но вроде. Notot (thecheckboxid), но не повезло.

EDIT CODE

<span class="testclass"><input id="ctl00_ContentPlaceHolder1_chxMale" type="checkbox" name="ctl00$ContentPlaceHolder1$chxMale" /></span> 
+0

Можете ли вы разместить разметку за один флажок (включая указанный диапазон)? –

+0

@Dejan - Ответ ниже обновляется для вашей разметки :) –

+0

Не работает. Он не снимает флажок сейчас. –

ответ

3

Вы должны изменить ваш код немного, как это (обновленный на обновленный вопрос):

$(function() { 
    $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(function() { 
    $(":not(.testclass) > input[type='checkbox']").attr('checked', this.checked); 
    }); 
}); 

В настоящее время вы проверка, если флажок первый класс, вы хотите отфильтровать все те, у кого нет класса, из партии вы устанавливаете свойство checked. Есть несколько способов сделать это, но :not() или .not() являются самыми легкими здесь. Другое изменение выше: поскольку вы находитесь внутри обработчика события для _chxAll, вы можете использовать вместо повторения идентификатора, это будет короче и быстрее :) С этим вы также можете использовать свойство DOM .checked.

+0

Вау ... Вы серьезно выбираете '$ (this) .is (': checked')' over' this.checked' ...? – James

+0

@ J-P - Усовершенствовал ответ, не удалось найти документацию о свойствах '.checked' ... Я не использую что-то, если не могу предоставить ссылку на него, если есть какие-то вопросы :) –

1
$('input:checkbox').not('.testclass').attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked')); 
3

Я добавил несколько очень необходимых улучшений производительности.

var inputs = $('input:checkbox').not('.testclass'); 

$('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
    function() { 
     inputs.attr('checked', this.checked); 
    } 
); 
Смежные вопросы