Вы передаете значение checked
в attr()
в качестве второго аргумента. Это заставляет это быть установленным. Затем возвращается объект jQuery с этим input
, который всегда является истинным значением.
Ваше условие if должно выглядеть следующим образом (вместо этого используйте псевдокласс :checked
):
if ($(this).is(':checked')) {
Кстати, ваш внутренний код может быть изменен следующим образом:
$(this).parent().find('.switch')
.attr('state', 'on')
.css({ 'left': "52px" })
.parent()
.css({ 'background-position': "147px -37px" });
Если у вас есть для использования кэшированной переменной (т.е. switches
), вы можете, но не переносите ее в функцию jQuery . Это сам объект jQuery, поэтому его не нужно переносить.