Добавить атрибут «отмечен» по клику jquery - PullRequest
23 голосов
/ 04 августа 2010

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

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

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');
}
});

Ответы [ 4 ]

32 голосов
/ 04 августа 2010

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

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

Редактировать:

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

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

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

this.checked = true;

Спасибо @ Энди Э за это.

26 голосов
/ 05 августа 2010

Кажется, это один из редких случаев, когда использование атрибута действительно уместно.Метод jQuery attr() не поможет вам, потому что в большинстве случаев (включая этот) он фактически устанавливает свойство, а не атрибут, делая выбор его имени несколько глупым. [ОБНОВЛЕНИЕ: Начиная с 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;
8 голосов
/ 17 апреля 2013

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

1 голос
/ 29 января 2014

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

var sid = $(this);
sid.attr('checked','checked');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...