Флажок проверяется только с первой попытки, ошибка javascript / jquery?

0

Хорошо, поэтому мне нужно иметь возможность щелкнуть любой элемент внутри .modal-interest, и он должен проверить флажок child-element при нажатии.

В настоящее время он работает для первого щелчка, но для каждого последующего щелчка, хотя код должен проверять флажок, он ничего не делает.

$('.modal-interest strong').click(function (e) {

 input = $(this).closest('.modal-interest').find('input');

 if (input.prop('checked')) {
     input.attr('checked', false).change();
 } else {
     input.attr('checked', true).change();
 }
});

Точное представление моей проблемы можно увидеть на следующем скрипте:

http://jsfiddle.net/c3p5m/

Застрял с этим и был бы признателен за любую помощь!

Теги:

4 ответа

1

Вместо этого вы должны использовать .prop():

ДЕМО jsFiddle

 $('.modal-interest strong').click(function (e) {

     input = $(this).closest('.modal-interest').find('input');

     if (input.prop('checked')) {
         input.prop('checked', false).change();
         $('h1').html('untick it');
     } else {
         input.prop('checked', true).change();
         $('h1').html('tick it');
     }
 });

Теперь, действительно, ваш код должен выглядеть следующим образом:

$('.modal-interest strong').click(function (e) {
    var input = $(this).closest('.modal-interest').find('input')[0];
    input.checked = !input.checked;
    $(input).change();
});
$('.modal-interest input[type=checkbox]').on('change', function () {
    $('h1').html(this.checked ? 'tick it' : 'untick it');
});

DEMO

  • 0
    Работал отлично, спасибо!
1

Используйте .prop() чтобы установить checked/Unchecked

input.prop('checked', false).change();

Демо-версия скрипта

0

Необходимо использовать метод prop.

input.prop('checked', false).change();

0

Попробуйте этот код:

 $('.modal-interest').click(function () {

     var input = $(this).find('input');

     if (input.prop('checked')) {
         input.prop('checked', false).change();
         $('h1').html('untick it');
     } else {
         input.prop('checked', true).change();
         $('h1').html('tick it');
     }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню