0

jquery.mobile ... jsファイルをコメントアウトすると、これは正常に機能し、チェックボックスをオンにするたびに、onclickイベントが2回発生します。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>
4

2 に答える 2

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 つまたは両方のイベントに対して関数を実行できます。

于 2012-12-04T22:36:00.157 に答える
0

マークアップの形式が正しくありません。<label>タグが存在しない ID を指しています。「myCheckbox」を指していますが、入力タグのIDは「abc」です。この変更により問題が修正され、マークアップが正しく強化されました。

<input id="abc" name="myCheckbox" onchange="tester()"
    type="checkbox" value="true" />
<label for="abc">Click me</label>
于 2012-12-04T22:27:51.283 に答える