Проблема с jquery show () / hide () в Internet Explorer?

Следующий HTML-код работает в Firefox, но по какой-то причине не работает в IE (Label2 не отображается). Это ошибка или я что-то упускаю?

Любая помощь будет оценена по достоинству.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv = "Content-Type" content = "text/html; charset=iso-8859-1">
        <script src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" type = "text/javascript">
        </script>
        <script>
            jQuery(document).ready(function(){
                function setVis(){
                    var val = $("#check").is(":checked");
                    if (val) 
                        $("#g_1").show();
                    else 
                        $("#g_1").hide();
                }

                setVis();
                $("#check").change(setVis);
            });
        </script>
    </head>
    <body>
        <span>
            <input type = "checkbox" id = "check" />
            <label>Label1</label>
        </span>
        <span id = "g_1">
            <label>Label2</label>
        </span>
    </body>
</html>
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
8
0
15 004
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Помните, что событие onchange запускается после того, как вы установите флажок, а затем оставьте флажок. Вы пытались проверить его, а затем щелкнуть где-нибудь еще в документе?

Вместо этого вы можете использовать события щелкнуть и нажатия клавиш в jQuery (для установки флажка с помощью щелчка и пробела).

<sidequestion> Есть ли причина, по которой вы объявляете / определяете функцию в параграфе готовности документа, а не за его пределами?

Еще одна правка; могу ли я порекомендовать этот изящный код:

jQuery(document).ready(function(){
    $("#g_1").hide();
    $("#check").change(function() { $("#g_1").toggle(); });
});

Спасибо за помощь, вы получили мой голос. Я разместил html-код, убрав настоящий (более сложный) код, поэтому он не в лучшей форме. Но все же я вижу ценность ваших предложений.

Gennady Shumakher 15.12.2008 20:53
Ответ принят как подходящий

Причина:

Согласно MSDN, изменить событие -

...fired when the contents are committed and not while the value is changing. For example, on a text box, this event is not fired while the user is typing, but rather when the user commits the change by leaving the text box that has focus.

Поведение для флажков аналогично: в IE событие не срабатывает до тех пор, пока фокус не будет удален с элемента (попробуйте: щелкните, затем вкладку с флажка, и поведение будет таким, как ожидалось). Firefox явно не уважает это различие.

Решение:

Используйте обработчик событий click вместо change:

            $("#check").click(setVis);

... и поведение должно быть одинаковым во всех браузерах.

Большинство считает это ошибкой в ​​IE: webbugtrack.blogspot.com/2007/11/… Как только делается выбор в радио-наборе (или флажке), значение изменяется. ИМХО, IE - единственный браузер, который с этим не справляется.

scunliffe 15.12.2008 21:24

Измените событие .change на событие .click. результат в обоих браузерах одинаковый. в IE при установке флажка размытия не происходило.

Это может быть проблемой, если флажок установлен при загрузке страницы (через cookie или что-то еще).

Nathan Long 15.12.2008 21:45

Другие вопросы по теме