2012-01-12 55 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}); 
});