Похоже, проблема, связанная с тем, что функция jqm складная _create использует jQuery wrapInner ().Существует известная ошибка jQuery (или это особенность?), Из-за которой теги скрипта внутри содержимого, которое должно быть перенесено, повторно выполняются логикой domManip.Хорошие времена.
Если вы можете переместить сценарий из разборного, это было бы идеально.Возможно, вы могли бы взломать jqm, чтобы не использовать wrapInner для этой конкретной строки кода:
collapsibleContent = collapsible.wrapInner( "<div class='ui-collapsible-content'></div>" ).children( ".ui-collapsible-content" ),
Лично я собираюсь пойти со старой школой "if (readyRan) return ;readyRan = true;" -введите флаг.Ностальгирует по FORTRAN.
Обновление
Так что я закончил со следующим в моем скрипте установки jqm (который будет запускаться на каждой странице и на странице «sub»)):
$(document).on({
pagecreate: function (e) {
$(':jqmData(role=collapsible) script').remove();
}
}, ':jqmData(role=page)');
Кажется достаточно безобидным.Я всегда могу добавить класс в свой скрипт и изменить селектор, если по какой-то причине я do хочу запустить встроенные скрипты дважды.Что-то вроде:
$(':jqmData(role=collapsible) script:not(.do-not-remove)').remove();