Добавить атрибут «Проверено» на Щелкните jQuery
-
25-09-2019 - |
Вопрос
Я пытался выяснить, как добавить атрибут «проверено» на флажок на клик. Причина, по которой я хочу сделать это, это так, если я проверю флажок; Я могу сохранить свое локальное хранилище, как 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');