проблема при снятии флажков с помощью кнопок jQuery - PullRequest
1 голос
/ 01 августа 2011

Вот группа переключателей:

<input id="Radio1" type="radio" name="g" />rbtn 1
<input id="Radio2" type="radio" name="g" />rbtn 2
<input id="Radio3" type="radio" name="g" />rbtn 3
<div id="test">Click this div to uncheck selected radio button</div>

И мой код jQuery выглядит так:

<script type="text/javascript">
    $(document).ready(function () {
        $("#test").click(function () {
            //alert("clicked");
            $(":checked").removeAttr("checked");
            //$(":checked").attr("checked", false);
        });
    });
</script>

По какой-то причине я не вижу, чтобы переключатели имелибыл отключен, когда я нажимаю div.Я также пытался использовать метод attr (), чтобы установить флажок равным false, но все равно не повезло.Может ли кто-нибудь дать мне небольшой совет здесь?

РЕДАКТИРОВАТЬ:

Я не знаю, если это потому, что использование страницы ASP вызывает проблему.Хотя я сомневаюсь в этом.Просто не могу думать ни о чем другом, что останавливает его работу.Так странно.

EDIT2:

Я думаю, что нашел истинную причину.Кажется, проблема в DOCTYPE.Вообще-то, я бы об этом не подумал.T_T

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Выше было то, что я изначально имел с моим HTML, и когда я его вынул, jQuery, казалось, работал нормально:)

Любое объяснениена что?

EDIT3:

Я думаю, удалив DOCTYPE, мы будем использовать режим причуд IE.Так что для браузеров не IE это на самом деле не поможет.

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:

Наконец, я могу перестать чесать голову, обновив код jQuery до последней версии.Действительно, jQuery 1.6.2 намного лучше, чем jQuery 1.6.: D

Ответы [ 6 ]

0 голосов
/ 27 марта 2013

Все вышеперечисленные процедуры работают на меня.И да, обновление jquery - отличная помощь.Что касается .live(), то он хорошо работает в jquery версии 1.6.2, но в jquery 1.7.7 код устарел.JQuery предлагает использовать .on() вместо .live().

Вы можете обратиться к этой ссылке http://api.jquery.com/live/ для более подробной информации.

0 голосов
/ 01 августа 2011

Любой фрагмент кода, приведенный здесь, должен быть в порядке, если код JQuery обновлен. Урок для меня, чтобы помнить, чтобы обновить JQuery. :)

0 голосов
/ 01 августа 2011

хорошо, ваш код работает на меня. Я тестировал в FF и IE 7, 8, 9. Но вы можете попробовать эту линию также для разблокировки радио.

 $("input[name=g]:checked").attr("checked",false);

В остальном, я думаю, вам следует проверить, включен ли js, при проверке далеко не очень интересного случая.

0 голосов
/ 01 августа 2011
try this.
<script type="text/javascript">
    $(document).ready(function () {
        $("#test").click(function () {
            //alert("clicked");
            //$(":checked").removeAttr("checked");
              $("input:radio").removeAttr("checked");

            //$(":checked").attr("checked", false);
        });
    });
</script>

вам необходимо указать тип селектора здесь $(":checked").attr("checked", false); или $(":checked").removeAttr("checked"); в вашем коде не указано, какой проверяемый элемент

0 голосов
/ 01 августа 2011
    $("#test").click(function () {
        alert("clicked");
        $("input:checked").removeAttr("checked");

    });

вот скрипка http://jsfiddle.net/2QgxN/

0 голосов
/ 01 августа 2011

Вот рабочий код:

http://jsfiddle.net/RSU46/

$(function() {
    $('#test').live('click', function () {
        $('input[name=g]:radio').removeAttr('checked');
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...