2013-12-16 2 views
1

Я проверил множество вопросов здесь, помимо атрибута .prop(), но ничего не получил. У меня есть вход, как показано ниже:checkbox не проверяется через каждый(), когда я нажимаю его

<input type="checkbox" name="chk_ignore_few[]" class="chk_ignore_few"> 

И другой, как показано ниже:

<input type="checkbox" name="chk_ignore_all" id="chk_ignore_all"> 

И это мой код:

$('#chk_ignore_all').click(function() { 
    $('.chk_ignore_few').each(function(){ 
     $(this).attr('checked', 'checked'); 
    }); 
}); 

Я проверил его с поджигатель, и увидел, что петли через разные флажки, но он не проверяет их вообще. Какова моя проблема выше?

     =============**EDIT**===================== 

Проблема заключалась в том, что в проекте JQuery UI был использован, и я не знал об этом. Фактический флажок был скрыт за изображениями и флажками opacity было 0. Есть ли способ запуска проверять в jQuery UI?

+3

try: '$ ('. Chk_ignore_few'). Prop ('checked', true);' без использования бесполезного цикла each(). И не хотите ли вы использовать onchange-событие вместо onclick, а затем проверить, проверен ли элемент #chk_ignore_all или нет? –

+0

Пожалуйста, предоставьте jsfiddle, я не знаю, как пользовательский интерфейс jquery мог плохо взаимодействовать с любым встроенным элементом checkbox. –

+0

Используется форма jQuery. Чтобы решить проблему, я просто добавил no-data-uniform = "true" ко всем флажкам, и теперь все хорошо. – ALH

ответ

2

Использование prop() и не используйте attr(), вам не нужно each()

$('.chk_ignore_few').prop('checked', true); 
1

Использование prop() вместо attr() и нет необходимости использовать each() как,

$('#chk_ignore_all').click(function() { 
    $('.chk_ignore_few').prop('checked', this.checked); 
}); 

Working Demo

+0

Вместо этого я бы использовал событие изменения, лучше для обработки более старого браузера, где состояние флажка можно было установить после события click –

+0

Какие старые браузеры? У меня только EVER используется клик, поскольку для изменения требуется размытие во многих старых браузерах. – mplungjan

1

попробовать это jsfiddle .. http://jsfiddle.net/ArH5A/2/

я обновил свою скрипку, вы можете захотеть, чтобы снять .chk_ignore_few когда вы снимите #chk_ignore_few

$(document).on("change", "#chk_ignore_all", function() { 
if($(this).is(":checked")) 
{ 
    $('.chk_ignore_few').each(function(k,fewChk){ 
     $(fewChk).prop('checked', true); 
    }); 
} 
else 
{ 
    $('.chk_ignore_few').each(function(k,fewChk){ 
     $(fewChk).prop('checked', false); 
    }); 
} 

});

+0

нет успеха! Я копирую и вставляю его в свой код. ничего не случилось! – ALH

+0

проверить мой jsfiddle. я обновлял его ... http: //jsfiddle.net/ArH5A/1/ –

+0

@phpGeek просто интересно, по крайней мере, клик на вашем сайте? Ожидаете ли вы, что элемент находится в DOM перед установкой обработчика? –

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