2012-01-12 51 views
2

我的PhoneGap和jQuery Mobile有一個問題,在我的應用程序中,一個事件觸發兩次 bookdetailpage(bookdetailpage.html)。當我選擇複選框時,事件觸發並對某個事件進行一些更新(updateBooksInMybooks()代碼)Phonegap和jQuery Mobile Event每次激發兩次

我只想選擇複選框,更新必須在後臺完成,沒有更多。如果複選框被選中,那麼它應該保持原樣或者如果它不是它應該是未經檢查(正常情況下)。

但是,當我點擊/檢查複選框它似乎工作正常,但事件兩次觸發一次。

  1. 當您點擊/選中複選框時,第一次(應該)。
  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」事件觸發時,點擊和點擊的雙擊就消失了。如果我等了那麼多,點擊和點擊只會開一次,但如果我沒有等待,那麼他們會發射兩次。以下是如何使其工作:

添加到你的身體標記

<body onload="onBodyLoad()"> 

,然後添加一些JavaScript:

<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}); 
});