У меня в jQuery mobile есть следующее:
<script type="text/javascript">
$("#locate_results").live("pageinit", function(event) {
$("#venues li a").click(function(e) {
e.preventDefault();
// Update location
$(".ui-dialog").each(function() { $(this).dialog("close"); });
});
});
</script>
<div data-role="page">
<div data-role="header">My Form</div>
<div data-role="content">
... other content ...
<a href="#locator" data-rel="dialog">Choose a Location</a>
</div>
</div>
<div data-role="dialog" id="locator">
<div data-role="header">Search for a Location</div>
<div data-role="content">
<form action="/locate" method="post" data-rel="dialog">
<input type="text" name="query" />
<input type="submit" value="Search" />
</form>
</div>
</div>
Вывод / locate выглядит следующим образом:
<div id="locate_results" data-role="dialog">
<div data-role="header">Search Results</div>
<div data-role="content">
<ul id="venues" data-role="listview">
<li><a href="#">Venue 1 Name</a></li>
... more results ...
</ul>
</div>
</div>
По сути,
- Пользователь нажимает ссылку «Добавить местоположение».
- Форма поиска местоположения загружается в диалоге
- Результаты поиска загружаются во втором диалоговом окне
- Пользователь нажимает результат поиска в окневторой диалог.
Шаг 5 должен закрывать оба диалога, возвращая пользователя к исходному содержимому страницы.Однако закрывается только самый верхний диалог (#locate_results).Я также попробовал следующее и получил тот же результат:
$("#locate_results").dialog("close");
$("#locator").dialog("close");
и
$(".ui-dialog").dialog("close");
Я пытался следовать этим ответам, но без удачи:
Как правильно закрыть все открытые диалоги в jQuery Mobile?
jsFiddle, демонстрируя проблему:
http://jsfiddle.net/zUuSy/