2015-06-01 2 views
1

У меня есть html-страница, где есть много мобильных панелей jquery. Теперь мне нужно создать новую панель из javascript динамически. Все панели находятся в div с определенным идентификатором. Я использую getElementById, чем innerHtml, чтобы добавить новый div во время выполнения.JQuery мобильный, динамически добавлять панели из javascript

Проблема заключается в том, что ящик jquery не должен появляться до тех пор, пока я не нажму ссылку, которая его откроет. Но когда я встроен в jquery div из javacript, он отображается как нормальный div. Кажется, что jquery mobile scripts не распознает новые div, которые я добавляю во время выполнения. Может ли кто-нибудь мне помочь?

Большое спасибо.

Вот простой пример задачи:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
 
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> 
 
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
 
</head> 
 
<body> 
 
<div id="panels"> 
 
    <div data-role="panel" id="myPanel"> 
 
    <h2>Panel Header</h2> 
 
    <p>You can close the panel by clicking outside the panel, pressing the Esc key or by swiping.</p> 
 
    </div> 
 
</div> 
 

 
    <a href="#myPanel" class="ui-btn ui-btn-inline ui-corner-all ui-shadow">Open Panel</a> 
 
    <a href="#myPanel2" class="ui-btn ui-btn-inline ui-corner-all ui-shadow">Open Panel2</a> 
 

 

 

 
</body> 
 
<script type="text/javascript"> 
 
//now when an event is verified i inner the new jquery mobile panel 
 
e.addEventListener("click", function(){ 
 
document.getElementById("panels").innerHTML+=' <div data-role="panel" id="myPanel2"> 
 
    <h2>Panel Header</h2> 
 
    <p>Text</p> 
 
    </div>'; 
 
}, false); 
 
</script> 
 
</html>

+0

Вы должны [разместить код] (http://stackoverflow.com/help/mcve). Кроме того, можете ли вы подробнее объяснить, в чем проблема? Это непросто понять. –

ответ

2

После динамического добавления панели, вы должны сказать JQuery Mobile для его инициализации. Один из способов заключается в вызове enhanceWithin() на панели контейнера:

$("#btnAdd").on("click", function() { 
    var panel = '<div data-role="panel" id="myPanel2"><h2>Panel Header</h2><p>Text</p></div>'; 
    $("#panels").append(panel).enhanceWithin(); 
}); 

Другой способ заключается в вызове панели() виджета инициализатор непосредственно на вновь добавленной панели DIV;

$("#btnAdd").on("click", function() { 
    var panel = '<div data-role="panel" id="myPanel2"><h2>Panel Header</h2><p>Text</p></div>'; 
    $("#panels").append(panel); 
    $("#myPanel2").panel(); 
}); 

DEMO

+0

Спасибо! @ezanker – Yuri

Смежные вопросы