jquery / jquery-mobile - как запускать функцию один раз для каждого элемента с добавлением элементов в DOM - PullRequest
0 голосов
/ 24 ноября 2011

Мне нужно запустить плагин для определенных элементов триггера.

Я использую это:

$( ':jqmData(role="page"):jqmData(trig="true")' ).live( 'pagebeforeshow',function(e){
   console.log("detected");
   // stuff to do...
   });

Поскольку это моя фоновая страница (первая в DOM), использование live запускает ее при каждом переходе и заменяетlive with one запускает его только на начальном триггерном элементе, а не на 2-м вытягиваемом элементе.

Вопрос: Как настроить функцию,msgstr "жить для триггерных элементов, но запускается только один раз для каждого найденного триггерного элемента"?Поможет ли установка флага с данными?

Спасибо за информацию!

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Я полагаю, ваша дилемма в том, что вы должны использовать .live(), поскольку изначально в DOM есть только 1 соответствующий элемент, а не как они упорядочены?В противном случае .one() должно работать нормально. manual имеет хороший пример того, как вы можете реализовать .one() с помощью .bind(), вот как вы делаете это с .live(), это должно сработать:

function preparePage(e) {
    $(this).die('pagebeforeshow', preparePage);
    console.log("detected");
    // stuff to do...
}

$(':jqmData(role="page"):jqmData(trig="true")').live('pagebeforeshow', preparePage);
0 голосов
/ 24 ноября 2011

Установите переменную, в которой вы будете хранить, был ли ваш триггер уже обработан.Используйте эту переменную как условие в вашем триггере, чтобы убедиться, что он сработал только один раз.Затем сбросьте его, когда вы узнаете, что ваш триггер может снова сработать.

...