2012-06-18 4 views
1

У меня есть приложение Phonegap, использующее jQuery и jQuery Mobile.Функция JS, вызванная без вызова

На некоторой странице я привязал функцию к событию касания, но функция запускается при загрузке страницы. После небольшой отладки (с использованием arguments.callee.caller.caller.toString()) я обнаружил, что по какой-то сумасшедшей причине в этой кнопке запускается событие click, только когда страница загружается.

Когда я изменил класс нижнего колонтитула, проблема исчезла (также мой стиль), затем я изменил ссылки на классы в моем файле CSS, чтобы соответствовать новому классу нижнего колонтитула, проблема вернулась. Это очень странно, возможно, у него есть что-то с моим CSS.

В моем проекте нет никакой ссылки на "footer_body".

Если я устанавливаю вызовы функций непосредственно в HTML (что-то вроде <span onClick="javascript:obj.leftMethod()">), у меня такое же поведение.

Наверняка это проблема с Phonegap/Android, так как этого не происходит в браузере ПК (кроме того, я должен прокомментировать много кода, который работает только на мобильных устройствах).

Вот код:

HTML:

<div class="footer_body"> 
    <span class="left"><span>Text 1</span></span> 
    <span class="right"><span>Text 2</span></span> 
</div> 

JS/JQuery:

function PageClass() { 
... 
    // called when the page is loaded 
    this.init = function() { 
     $(".footer_body", "#page_2").find(".left").unbind("tap").bind("tap", function() { 
      that.leftMethod(); 
     }); 

     $(".footer_body", "#page_2").find(".right").unbind("tap").bind("tap", function() { 
      that.rightMethod(); 
     }); 
     // that is a reference to "this" of the class 
    } 
} 
+1

Положить 'отладчик; 'первая строка в ваших функциях' leftMethod()/rightMethod() '. Откройте в Chrome и когда он загрузится, нажмите «Ctrl + Shift + I», появится всплывающее окно с вкладкой «Сценарии», на которой вы получите весь стек (caller, callle, events и т. Д.) –

+0

@ GRIGORE-TURBODISEL, m с помощью Phonegap. –

+0

Не имеет значения. Попробуйте это в любом случае. –

ответ

0

Вопрос рядом быть решена. Реальная проблема заключается в том, что все события касания переносятся на следующие страницы. Раньше я этого не замечал, казалось, это было что-то вроде автоматического нажатия, но это было предыдущее событие касания экрана, которое вызвало текущее событие касания страницы.

Уверен, что это ошибка Android или Phonegap. Более подробная информация об этом here, в случае, если у кого-то такое же восприятие у меня возникло из-за этой проблемы.

Я все еще нуждаюсь в конкретном решении, но я устал от этого, поэтому я временно решил эту настройку на короткую задержку, чтобы активировать функции слушателя.

Смежные вопросы