Вопрос

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

Я пытался сделать $ (этот) .attr («проверено»); Но это, кажется, не хочет добавлять проверенные.

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

<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');
}
});
Это было полезно?

Решение

Похоже, это одно из редких случаев, когда использование атрибута на самом деле подходит. jquery's. attr() Метод не поможет вам, потому что в большинстве случаев (в том числе) он на самом деле устанавливает свойство, а не атрибут, что делает выбор его имени выглядеть несколько глупо. Обновление: с jQuery 1.6.1, Ситуация немного изменилась]

Т.е. имеет некоторые проблемы с домом 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;

Другие советы

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

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

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

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

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

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

this.checked = true;

Спасибо @Энди Э. для этого.

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

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

var sid = $(this);
sid.attr('checked','checked');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top