Ответ 1
Попробуйте
if($(this).parent().find('input').is(':checked')) {
something();
}
Это работает, если есть только один флажок.
Как бы я этого добился:
if($(this).parent().find('input:checked') == true)
{$(this).find('.switch').attr('state','on');}
else{$(this).find('.switch').attr('state','off');}
Я знаю, что это неправильно, но вы понимаете, что я думаю:). Если есть вход, который проверен, добавьте состояние, если не выключено.
Попробуйте
if($(this).parent().find('input').is(':checked')) {
something();
}
Это работает, если есть только один флажок.
Это не обязательно неправильно, но селектор возвращает все элементы, которые применяются к условию. Поэтому вам нужно проверить, не длина ли 0:
if($(this).parent().find('input:checked').length)
Это также работает, если вы знаете идентификатор входного элемента html:
if($('input#element_id_name:checked').length>0) {
//your code here.
}
Supposign input[type=checkbox] = this
, вы можете проверить его на самом элементе.
Источник: jQuery docs
$("input[type=checkbox]").change(function(){
if ( this.checked ){}
//or
if ( $(this).prop("checked") ){}
//or
if ( $(this).is(":checked") ){}
});
Попробуйте сделать это:
if ($(this).parent().find('input:checked').length > 0) {
$(this).find('.switch').attr('state','on');
} else {
$(this).find('.switch').attr('state','off');
}
Предполагается, что у вас есть только 1 вход в пределах $(this).parent()
Если вы знаете идентификатор, просто используйте:
if ($("#myCheckBox").is(":checked")) {
}