На странице _Layout внутри заголовка у меня есть div, который изначально скрыт при загрузке страницы.
<div data-role="header">
<div id="myDiv" data-role="button"></div>
</div>
...
$(document).bind("pageinit", function () {
$("div#myDiv").hide();
});
где-то на другой странице действие onclick подключено к функции js, которая добавляет текстовый контент в myDiv, и после этого я показываю myDiv как
<script>
...
var textToAppend = "some text";
$("div#myDiv").html(textToAppend);
$("div#myDiv").show();
...
</script>
Div отображается с текстом, но визуально, без ожидаемого стиля (кнопка data-role = "). В firebug div правильно установлена кнопка передачи данных, но визуально нет.
Это потому, что роль данных настраивается с некоторыми промежутками, визуализированный код выглядит так:
<div id="myDiv" data-role="button" data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-theme="a" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-up-a">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text">some test</span>
</span>
</div>
Ваш текущий код перезапишет промежутки, и форматирование будет испорчено. Вы должны заменить текст внутреннего диапазона - для обновления текста используйте следующее:
$("div#myDiv .ui-btn-text").text(textToAppend);
js скрипка: http://jsfiddle.net/BQMTP/2/
Когда вы динамически изменяете содержимое элементов, вы должны воссоздать элемент, поэтому применяется расширенная разметка jquery mobile. В этом случае:
$("div#myDiv").html(textToAppend).button();
js скрипка: http://jsfiddle.net/gfg/Z9xvd/
Я бы рекомендовал этот подход, потому что он не полагается на html-разметку, которая сильно изменилась в версии 1.4 jQuery mobile.
Например, следующий html: <input id="btnShow" type="submit" value="show">
будет:
jQuery mobile 1.3.2
<div data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-theme="c" data-disabled="false" class="ui-submit ui-btn ui-shadow ui-btn-corner-all ui-btn-up-c" aria-disabled="false">
<span class="ui-btn-inner">
<span class="ui-btn-text">show</span>
</span>
<input id="btnShow" type="submit" value="show" class="ui-btn-hidden" data-disabled="false">
</div>
jQuery mobile 1.4.2
<div class="ui-btn ui-input-btn ui-corner-all ui-shadow">
show
<input id="btnShow" type="submit" value="show">
</div>