Почему это "проверено" не работает? - PullRequest
0 голосов
/ 20 июня 2011

Это код:

    $('#checkBoxContact1').click(function(e) {
        e.preventDefault();

        if ($('#chbBox1').attr('checked') == true)
            $('#chbBox1').attr('checked', 'false');
        else $('#chbBox1').attr('checked', 'true');
    });

Я звоню, когда нажимаю на ссылку. Но на самом деле кажется, что это не работает ...

может быть, я должен использовать: проверено?

Ответы [ 2 ]

5 голосов
/ 20 июня 2011

Используйте .prop() и, что более важно, не заключайте в кавычки логические значения.

Для логических атрибутов чистое существование имеет значение. checked="", checked="no", checked="false" все приводит к проверке элемента. Чтобы отменить проверку элемента через атрибут, вам нужно использовать .removeAttr('checked').

Однако вы можете использовать свойство , которое является действительным логическим значением. Так что .prop('checked', true_or_false) будет делать то, что вы хотите. На самом деле вы могли бы даже использовать .attr('checked', true_of_false), поскольку jQuery 1.6.1, но использование .prop() вместо .attr() немного быстрее, поскольку не нужно проверять, действительно ли это свойство, которое вы пытаетесь установить вместо атрибута.

0 голосов
/ 20 июня 2011

Попробуйте вот так:

1. $('#chbBox1').attr('checked', ''); // for false
2. $('#chbBox1').attr('checked', 'checked'); //for true

Работает Upto jQuery-1.5.2 # 1.

В jQuery- 1.6 его принимают как истину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...