如果我注释掉jquery.mobile ... js文件,这个工作正常,包括它,每次我点击复选框,onclick事件会触发两次。 onchange事件也是如此。有什么想法吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
</head>
<body>
<script>
function tester() { alert("I get called twice on click"); }
</script>
<input id="abc" name="myCheckbox" onchange="tester()" type="checkbox" value="true" />
<label for="myCheckbox">Click me</label>
</body>
</html>
答案 0 :(得分:3)
这是设计上的,因为这两件事都在发生。请参阅示例:http://jsfiddle.net/Twisty/T3qmG/
<强> HTML:强>
<html>
<head>
<title>Checkbox Test</title>
</head>
<body>
<div data-role="page">
<div data-role="header">
<h2>Checkbox Test</h2>
</div>
<div data-role="content">
<input type="checkbox" id="checkbox-choice-1" />
<label for="checkbox-choice-1">Click me</label>
</div>
</div>
</body>
</html>
<强> JQuery的:强>
$(document).ready(function(){
$("#checkbox-choice-1").click(function(){
alert("Click event triggerd.");
});
$("#checkbox-choice-1").change(function(){
alert("Change event triggerd.");
});
});
如果可能,我建议将脚本代码分开。您可以为一个或两个事件提供功能。
答案 1 :(得分:0)
您的标记格式不正确。 <label>
标记指向不存在的ID。它指向“myCheckbox”,但输入标记的ID为“abc”。此更改可以解决您的问题并正确增强标记。
<input id="abc" name="myCheckbox" onchange="tester()"
type="checkbox" value="true" />
<label for="abc">Click me</label>