Правильное форматирование при добавлении динамического контента в jquery mobile - PullRequest
6 голосов
/ 27 февраля 2012

Я пытаюсь динамически добавить некоторый контент в список флажков в сворачиваемом элементе <li> в jQuery Mobile.Я не могу получить правильное форматирование с красивыми закругленными углами и сгруппированными элементами.Еще хуже становится, когда я добавляю другие элементы на уровне листа.

Здесь - пример, который показывает проблему (очевидно, добавьте jquery и jquerymobile скрипты и CSS в заголовок):

<body> 
 <div data-role="page" id="page">
  <ul id="listList" data-role="listview">
   <li id="list1" data-role="collapsible">
    <h3>list 1</h3>
    <div data-role="fieldcontain">
     <fieldset data-role="controlgroup" id="fs1">
      <input type="checkbox" id="cb1" /><label for="cb1">text</label></fieldset></div></li>
   <li id="list2" data-role="collapsible">
    <h3>list 2</h3>
     <p>here comes another list of checkboxes...</p></li></ul>
 <input type="button" onclick="addCheckbox();" value="add a checkbox to list1" /></div>
</body>
<script>
 function addCheckbox() {
   $("#list1 fieldset").append('<input type="checkbox" id="cb2" /><label for="cb2">More text</label>');
 }
</script>

Я пытался добавить .page() после вызова append(), но он не работал должным образом, хотя и немного лучше.

Помимо моего примера, общий вопрос - как динамически добавлятьконтент в дерево DOM после того, как jQuery Mobile поигрался со структурой DOM.Я считаю, что существует функция, которая «jquerymobilizes» часть дерева, но я не могу найти ее.

Большое спасибо за вашу помощь!

РЕДАКТИРОВАТЬ: Короче говоря, я пытаюсьдинамически добавлять элементы в один <li> элемент listview и не пытаться добавлять элементы в сам список.Обновление listview здесь, похоже, не поможет.

РЕДАКТИРОВАТЬ 2: Я немного ближе, когда нашел функцию .trigger("create"), которая может быть связана с .append() (cf JQM FAQ ).С помощью следующего скрипта он работает немного лучше, хотя data-role="controlgroup" не обеспечивает правильного форматирования с красивыми закругленными прямоугольниками.

$("#list1 fieldset").append('<input type="checkbox" id="cb2" /><label for="cb2">More text</label>').trigger("create");

Я опубликую полный ответ, если доберусь туда в какой-то момент.

РЕДАКТИРОВАТЬ 3: Вот мой пример, показанный в jsFiddle

Ответы [ 3 ]

5 голосов
/ 27 февраля 2012

Я думаю, что смогу ответить на свой вопрос, вот что я получил:

  • для динамического добавления элементов в jQuery Mobile .trigger("create") (ср. jQuery Mobile FAQ )
  • чтобы добавить их в складную часть складного элемента, добавьте его в div.ui-collapsible-content или создайте контейнер div внутри складной части ex ante , чтобы вы добавили содержимое прямо туда
  • чтобы получить хороший рендеринг сгруппированных флажков, вы должны добавить все флажки сразу (я не мог получить гладкие закругленные углы, когда я добавил их последовательно

Итак, вот мой последний сценарий, который делает то, что мне нужно:

$("#list1 div[data-role='fieldcontain']").append('<fieldset data-role="controlgroup">'
    +'<input type="checkbox" id="cb1" /><label for="cb1">text</label>'
    +'<input type="checkbox" id="cb2" /><label for="cb2">More text</label></fieldset>'
    +'<a href="index.html" data-role="button" data-icon="delete">Delete</a>')
    .trigger("create");

Надеюсь, это поможет!

3 голосов
/ 27 февраля 2012

Эта проблема связана с тем, что после добавления динамического содержимого в просмотр списка мобильные классы jquery могут не подавать заявку на просмотр списка.так что попробуйте любой из следующих

$('#listList').listview('refresh');   //which refresh your list view
$('#listList').listview('refresh',true);   //which rebuilds the listview with your new content
1 голос
/ 27 февраля 2012

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

$('#mylist').listview('refresh');

Это будет после добавления новых элементов в список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...