PhoneGap и jQuery Mobile Event запускаются дважды - PullRequest
2 голосов
/ 12 января 2012

У меня есть проблема с PhoneGap и jQuery Mobile, когда событие запускается дважды в bookdetailpage(bookdetailpage.html) в моем приложении. Когда я устанавливаю флажок, событие запускается и выполняется некоторое обновление веб-службы. (updateBooksInMybooks() вкод)

Я хочу только установить флажок, и обновление должно выполняться в фоновом режиме, флажок Ничто больше. Если флажок установлен, то он должен оставаться как есть, или, если это не так, он должен быть снят (как обычно,).

Но когда я нажимаю / проверяю флажок, кажется, что он работает правильно, но событие запускается дважды.

  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>
...

Ответы [ 2 ]

1 голос
/ 26 апреля 2012

Старый вопрос, но у меня была похожая проблема, поэтому я выкладываю это в надежде, что это кому-нибудь поможет. Двойное срабатывание нажатий и щелчков прошло, когда я должным образом ожидал события «deviceReady» от PhoneGap, чтобы выстрелить. Если бы я ожидал этого, то щелчки и щелчки сработали только один раз, но если бы я не стал ждать, они бы сработали дважды. Вот как это сделать:

Добавьте к своему тегу тела

<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 голосов
/ 14 мая 2013

Попробуйте, on('click').

Для примера:

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