2012-01-12 17 views
2

私のapp.Whenでイベントが発生し、いくつかの更新を行うと、私は、私のapp.Whenで の)に2回発生するPhoneGapとjQuery Mobileに問題があるWebサービス(updateBooksInMybooks()コード内)PhonegapとjQueryモバイルイベントが一度に2回発生する

チェックボックスをオンにして、バックグラウンドで更新する必要があります.Nothing more.ifチェックボックスがオンになっている場合は、そのままにしてください。チェックされていない(通常の場合)。

しかし、チェックボックスをタップ/チェックすると正しく動作しているように見えますが、イベントは2回ずつ発生します。

  1. このチェックボックスをタップ/チェックすると、最初に(そうする必要があります)。
  2. 2回目に画面上の任意の場所をクリック/タップすると再び起動します。

これは、ハングして画面上で新しいクリック/タップを待つようなものなので、再び発砲する可能性があります。

... 
<div data-role="page" data-theme="c" id="detailpage" data-url="detailpage.html"> 
<div data-role="header" id="hdrBokDetaljer" name="hdrBokDetaljer" data-theme="c" > 
     ... 
</div> 
<div data-role="content" id="contentBokDetaljer" name="contentBokDetaljer" > 
     ...   
<div id="detailmybooks"> 
    <fieldset id="mybooksGroup" data-role="controlgroup">      
     <input type="checkbox" name="checkInMybooks" id="checkInMybooks" class="custom" /> 
     <label for="checkInMybooks">My books</label>  
    </fieldset>    
</div>    
</div> 

<div data-role="footer" id="ftrBokDetaljer" name="ftrBokDetaljer" ></div> 

<script type="text/javascript" charset="utf-8"> 
    $(document).delegate('#detailpage', 'pagecreate', function() { 

     $('#checkInMybooks').attr("checked", detailCheckboxVar); 

    }); 

    $('#checkInMybooks').change(function() { 

     //event.preventDefault(); 
     updateBooksInMybooks($('#detailbookid').html()); 

     return false; 
    }); 
</script> 
</div> 
... 

答えて

1

古い質問が、私はそれが誰かを助ける希望でこれを投稿するので、私は同様の問題があった。ここで

はコードです。 PhoneGapの "deviceReady"イベントが正常に起動するのを待って、タップとクリックの二重発射が消えました。私がそれを待っていたら、タップとクリックは一度だけ発砲しましたが、私が待っていなかったら、二度発射します。ここではそれを動作させる方法は次のとおりです。

は、いくつかのJavaScriptをあなたの体のタグ

<body onload="onBodyLoad()"> 

に追加し、次に追加:

<script type="text/javascript"> 
    function onBodyLoad() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

    function onDeviceReady() { 
     $(function() { 
     // Do your stuff here, binding to elements, etc 
     }); 
    } 
</script> 
0

てみてください、on('click')。例えば

$("#btn_back_home").on('click',function(event) 
{ 
    $.mobile.changePage("#mobile_page_main", {reverse: true,changeHash: false}); 
});