З впровадженням методу опори тепер мені потрібно знати прийнятий спосіб зняти прапорець. Є це:
$('input').filter(':checkbox').removeAttr('checked');
або
$('input').filter(':checkbox').prop('checked',false);
З впровадженням методу опори тепер мені потрібно знати прийнятий спосіб зняти прапорець. Є це:
$('input').filter(':checkbox').removeAttr('checked');
або
$('input').filter(':checkbox').prop('checked',false);
Відповіді:
jQuery 3
Станом на jQuery 3, removeAttrбільше не встановлює відповідну властивість false:
Перед JQuery 3.0, використовуючи
.removeAttr()на булевої атрибуті , такі якchecked,selectedабоreadonlyб також встановити відповідне ім'я властивістьfalse. Така поведінка була потрібна для стародавніх версій Internet Explorer, але не є правильною для сучасних браузерів, оскільки атрибут представляє початкове значення, а властивість представляє поточне (динамічне) значення.Майже завжди є помилкою використовувати
.removeAttr( "checked" )елемент DOM. Єдиний раз, коли це може бути корисним, це якщо DOM пізніше буде серіалізований назад до рядка HTML. У всіх інших випадках.prop( "checked", false )замість цього слід використовувати.
Отже, лише .prop('checked',false)правильний спосіб використання цієї версії.
Оригінальна відповідь (з 2011 року):
Для атрибутів, що мають основні булеві властивості (з них checkedодна), removeAttrавтоматично встановлюється базове властивість на false. (Зауважте, що це одне з "виправлень", сумісних із зворотною сумісністю, доданих у jQuery 1.6.1).
Отже, або буде працювати ... але другий приклад, який ви навели (використовуючи prop), є більш правильним з двох. Якщо ваша мета - зняти прапорець, ви дійсно хочете впливати на властивість , а не на атрибут, і для цього не потрібно проходити removeAttr.
removeProp()] для видалення нативних властивостей, таких як перевірені, відключені або вибрані. Це повністю вилучить властивість і, як тільки буде видалено, не може бути додано знову до елемента. Використовуйте .prop()для встановлення цих властивостей на значення false замість цього ". removePropдійсно призначений для використання лише зі спеціальними властивостями.
використання checked: true, false властивість прапорця.
jQuery:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}
Я рекомендую використовувати обидва, prop та attr, оскільки у мене були проблеми з Chrome, і я вирішив це за допомогою обох функцій.
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}
$("input[type='checkbox'], input[type='radio']").prop("checked", false).attr("checked", false).removeAttr("checked");
Інша альтернатива зробити те ж саме - фільтрувати за атрибутом type = checkbox :
$('input[type="checkbox"]').removeAttr('checked');
або
$('input[type="checkbox"]').prop('checked' , false);
Зауважте, що різниця між атрибутами та властивостями може бути важливою в конкретних ситуаціях. Перед jQuery 1.6 метод .attr () іноді враховував значення властивостей під час пошуку деяких атрибутів, що може спричинити непослідовність поведінки. Як і в jQuery 1.6, метод .prop () забезпечує спосіб явного пошуку значень властивостей, а .attr () отримує атрибути.
Знай більше ...