Подтвердить что ты не робот

Добавить атрибут "checked" в click jquery

Я пытался выяснить, как добавить атрибут "checked" к флажку при щелчке. Причина, по которой я хочу сделать это, - это если я поставлю флажок; Я могу иметь локальное хранилище, которое можно сохранить как html, поэтому, когда страница обновляется, он отмечает, что флажок установлен. На данный момент, если я его проверю, он угасает родителя, но если я сохраню и перезагружу его, оно исчезнет, ​​но флажок не установлен.

Я пробовал делать $(this).attr('checked'); но он, кажется, не хочет добавлять проверенные.

EDIT: После чтения комментариев кажется, что я не был ясен. Мой тег ввода по умолчанию:

<input type="checkbox" class="done">

Мне нужно, чтобы это было так, когда я нажимаю флажок, он добавляет "проверено" до конца. Пример:

<input type="checkbox" class="done" checked>

Мне нужно это сделать, поэтому, когда я сохраняю html в локальном хранилище, когда он загружается, он устанавливает флажок, как отмечено.

$(".done").live("click", function(){
if($(this).parent().find('.editor').is(':visible') ) {
var editvar = $(this).parent().find('input[name="tester"]').val();
$(this).parent().find('.editor').fadeOut('slow');
$(this).parent().find('.content').text(editvar);
$(this).parent().find('.content').fadeIn('slow');
}
if ($(this).is(':checked')) {
$(this).parent().fadeTo('slow', 0.5);
$(this).attr('checked'); //This line
}else{

$(this).parent().fadeTo('slow', 1);
$(this).removeAttr('checked');
}
});
4b9b3361

Ответ 1

Кажется, это один из редких случаев, когда использование атрибута действительно подходит. Метод jQuery attr() не поможет вам, потому что в большинстве случаев (включая это) он фактически устанавливает свойство, а не атрибут, делая выбор его имени несколько глупым. [UPDATE: Поскольку jQuery 1.6.1, ситуация немного изменилась]

У IE есть некоторые проблемы с методом DOM setAttribute, но в этом случае это должно быть хорошо:

this.setAttribute("checked", "checked");

В IE это всегда будет проверять флажок. В других браузерах, если пользователь уже установил флажок и снял флажок, установка атрибута не будет иметь видимого эффекта. Поэтому, если вы хотите гарантировать, что флажок установлен, а также атрибут checked, вам также необходимо установить свойство checked:

this.setAttribute("checked", "checked");
this.checked = true;

Чтобы снять флажок и удалить атрибут, сделайте следующее:

this.setAttribute("checked", ""); // For IE
this.removeAttribute("checked"); // For other browsers
this.checked = false;

Ответ 2

$( this ).attr( 'checked', 'checked' )

just attr( 'checked' ) вернет значение атрибута $(this) checked. Чтобы установить его, вам понадобится второй аргумент. На основе <input type="checkbox" checked="checked" />

Edit:

Основываясь на комментариях, более подходящая манипуляция будет следующей:

$( this ).attr( 'checked', true )

И прямой javascript-метод, более подходящий и эффективный:

this.checked = true;

Спасибо @Andy E за это.

Ответ 3

Если .attr() не работает для вас (особенно при проверке и снятии флажков последовательно), используйте .prop() вместо .attr().

Ответ 4

используйте этот код

var sid = $(this);
sid.attr('checked','checked');