Следующий 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>

Помните, что событие onchange запускается после того, как вы установите флажок, а затем оставьте флажок. Вы пытались проверить его, а затем щелкнуть где-нибудь еще в документе?
Вместо этого вы можете использовать события щелкнуть и нажатия клавиш в jQuery (для установки флажка с помощью щелчка и пробела).
<sidequestion> Есть ли причина, по которой вы объявляете / определяете функцию в параграфе готовности документа, а не за его пределами?
Еще одна правка; могу ли я порекомендовать этот изящный код:
jQuery(document).ready(function(){
$("#g_1").hide();
$("#check").change(function() { $("#g_1").toggle(); });
});
Согласно 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 - единственный браузер, который с этим не справляется.
Измените событие .change на событие .click. результат в обоих браузерах одинаковый. в IE при установке флажка размытия не происходило.
Это может быть проблемой, если флажок установлен при загрузке страницы (через cookie или что-то еще).
Спасибо за помощь, вы получили мой голос. Я разместил html-код, убрав настоящий (более сложный) код, поэтому он не в лучшей форме. Но все же я вижу ценность ваших предложений.