Метод .trigger ('create') не работает с вводом текста / iframe - PullRequest
1 голос
/ 31 августа 2011

Так что я динамически вставляю текстовые вводы в мобильную страницу jQuery, которая находится внутри iframe. Я могу заставить его вставлять правильно, но метод триггера ('create') не применяет никакие стили jqm, хотя он также не выдает никаких ошибок javascript.

Код на странице, которая вставляется в iframe:

 $('.textarea').click(function() {
   $('#form').contents().find('#maincontent').append('<div data-role="fieldcontain"><label for="insert">Text Input:</label><input type="text" name="insert" id="insert" value="" /></div>');
   $('#form').contents().find('#maincontent').trigger('create');
});

А вот основное содержание jqm (я исключил верхний / нижний колонтитул для удобства чтения), которое находится внутри iframe (до вставки нового ввода текста)

<div data-role="content" id="maincontent"> 
 <div data-role="fieldcontain">
     <label for="name">Text Input:</label>
     <input type="text" name="name" id="name" value=""  />
 </div>
</div>

Ответы [ 4 ]

0 голосов
/ 15 августа 2013

Создать функцию внутри iframe и включить метод триггера ('create') в эту функцию. Затем вызовите эту функцию снаружи от iframe.

см. это .

0 голосов
/ 01 сентября 2011

Я делаю следующие предположения:

  • # форма - это идентификатор вашего iframe.
  • Содержимое iframe поступает из того же домена.

Вы пробовали это:

$('.textarea').click(function() {    
  var iframecontent = $('#form').contents().find('#maincontent');
  var newstuff = $('<div data-role="fieldcontain"><label for="insert">Text Input:</label><input type="text" name="insert" id="insert" value="" /></div>');
  newstuff.appendTo(iframecontent).trigger('refresh');
});
0 голосов
/ 08 августа 2012

Запустите эту строку после того, как сделаете все ваши вставки.

$('body').append(html).trigger('create');

Трюк, найденный другим пользователем SO https://stackoverflow.com/users/456850/devin-dixon ( Оригинальный вопрос ).

0 голосов
/ 01 сентября 2011

событие create может быть запущено, но где вы его слушаете и отвечаете?

для этого вам может понадобиться что-то вроде

$("#maincontent").bind('create', function() {
    //respond to the fired event
})
...