Eli*_*ria 16 javascript jquery
我试图制作一个具有一些动态行为的表单.具体来说,我在div中输入了输入,我希望当用户点击div中的任意位置时,输入就会被选中.我使用的是JQuery 1.2.6,一切正常.
但是,我升级到JQuery 1.3.2并且我得到了一些奇怪的行为.当我点击任何输入时,我会在选择之前得到延迟.我的Firefox错误控制台在JQuery库中给了我几个"太多的递归"错误.我在Internet Explorer 7中尝试了该页面并收到错误消息"对象不支持此属性或方法".
我做错了什么,或者这是JQuery中的错误?有没有人知道一种方法来修复这种行为,而不回到旧版本?我正在使用Firefox 3.0.7以防万一.这是我用来说明问题的一个简单示例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>quiz test</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
</head>
<body>
<div class='question'>Favorite soda?
<div><input type='radio' name='q' value='A' id='a'><label for='a'>Coke</label></div>
<div><input type='radio' name='q' value='B' id='b'><label for='b'>Pepsi</label></div>
</div>
<script type="text/javascript">
$(function() {
$(".question div").click(function() {
$(this).children("input").click();
});
});
</script>
</body></html>
Run Code Online (Sandbox Code Playgroud)
$(function() {
$(".question div").click(function() {
var radio = $(this).children("input")[0];
radio.checked = !radio.checked;
});
});
Run Code Online (Sandbox Code Playgroud)
呀,点击事件冒泡...所以当你加注时$(this).children("input").click(),你$(".question div").click()再次加注,依此类推.
谢谢你们。我尝试了 Grillix 设置 checked 属性的想法,尽管我必须稍微修改一下语法。这是我所做的:
$(this).children("input").attr("checked", true);
Run Code Online (Sandbox Code Playgroud)
它有效,但我仍然很好奇为什么我以前的方法停止使用 JQuery 1.3.2。我知道事件冒泡行为的变化,但为什么我不能通过在回调中调用“event.stopPropagation()”或“return false”来解决这个问题?
| 归档时间: |
|
| 查看次数: |
25419 次 |
| 最近记录: |