7

シンプルな JQuery モバイル アプリに問題があります。つまり、クリック イベントが 2 回発生するということです。

この問題を解決した同様の問題に対する解決策はありません。

問題は、デバイスへのデプロイまたはブラウザーでの表示のどちらで発生します。

これがコードです

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no" />

<script src="jquery-1.8.2.min.js" type="text/javascript"></script>  
<script src="jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
<script src="cordova-2.2.0.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).bind("mobileinit", function () {
        $.support.cors = true;
        $.mobile.allowCrossDomainPages = true;
    });
</script>

<link rel="Stylesheet" href="jquery.mobile-1.2.0.min.css" />

<div>
    <input type="button" id="ButtonSubmit" value="Save" />
</div>

<script type="text/javascript">


    $("#ButtonSubmit").click(function () {
        alert('Clicked');
    });

</script>

4

5 に答える 5

6

以下の方法を使用して解決できます。

最初にバインドを解除してから、以下のようにバインドします

<script type="text/javascript">

    $("#ButtonSubmit").unbind('click').bind('click', function () {
            alert('Clicked');
            return false; //to prevent the browser actually following the links!
        });

</script>

更新: onメソッドを使用している場合は、以下のように使用できます。

注: offメソッドを使用すると、以前のクリック イベント ハンドラーが削除され、onメソッドを使用すると新しいイベント ハンドラーが追加されます。そのため、2 回クリックすることはできません。

<script type="text/javascript">

$('#ButtonSubmit').off('click').on('click', function(){

  alert('Clicked');
  return false; //to prevent the browser actually following the links!
}); 

</script>
于 2012-12-01T15:21:08.880 に答える
0

デフォルトのアクションを防止しようとしましたか?

<script type="text/javascript">
    $("#ButtonSubmit").click(function (e) {
        e.preventDefault();
        alert('Clicked');
    });
</script>
于 2012-12-01T15:28:31.823 に答える
0

onclick ハンドラーが 2 回起動している場合は、ハンドラーが 2 回登録されている可能性があります。ハンドラーを登録する直前にログを追加して、これが起こっていることを検証できます。次に、2 回登録される理由をデバッグできます。

于 2012-12-01T15:29:23.667 に答える