jquery mobile - пользовательское меню выбора во всплывающем окне
Пожалуйста, найдите ниже скрипку http://jsfiddle.net/yesvin/Xj8p8/
<ul data-role="listview">
<li data-role="fieldcontain">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="" />
</li>
<li data-role="fieldcontain">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="" />
</li>
<li data-role="fieldcontain">
<label for="pageselect">page select</label>
<select name="pageselect" id="pageselect" data-native-menu="false">
<option value="">Choose One</option>
<option value="">pageselect opt 1</option>
<option value="">pageselect opt 2</option>
<option value="">pageselect opt 3</option>
</select>
</li>
<li data-role="fieldcontain">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="" />
</li>
</ul>
<a href="#pop" data-rel="popup" data-position-to="window" data-role="button" id="farmer_family_member">Add Popup</a>
<div data-role="popup" id="pop">
<ul data-role="listview">
<li data-role="fieldcontain">
<label for="popupselect">popup select</label>
<select name="popupselect" id="popupselect" data-native-menu="false">
<option value="">popup select opt 1</option>
<option value="">popup select opt 2</option>
<option value="">popup select opt 3</option>
</select>
</li>
<li data-role="fieldcontain">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="" />
</li>
<li data-role="fieldcontain">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="" />
</li>
<li data-role="fieldcontain">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="" />
</li>
<li data-role="fieldcontain">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="" />
</li>
</ul>
</div>
Тот же, что и на моей странице, когда я просматриваю эту страницу в мобильном телефоне, у нее есть некоторые проблемы,
Когда я нажимаю кнопку "Добавить всплывающее окно", открывается всплывающее окно. Внутри этого всплывающего окна есть меню выбора, а data-native-menu = false для этого меню выбора не работает. Как мне это включить?
Если я изменю меню "popupselect" внутри всплывающего окна, откроется меню "pageselect". Как я могу предотвратить это?
Пожалуйста посоветуй...
Заранее спасибо.
1 ответ
Первый ответ
Короткий ответ: ты не можешь этого сделать. Я знаю, это звучит глупо, но у jQuery Mobile есть некоторые ограничения для всплывающих окон, и главное ограничение заключается в том, что вы не можете связывать всплывающие окна. Поскольку пользовательское меню выбора - это просто еще одно всплывающее окно, его нельзя отобразить во всплывающем окне.
Примечание. Цепочка всплывающих окон запрещена.
В настоящее время фреймворк не поддерживает цепочку всплывающих окон, поэтому невозможно вставить ссылку из одного всплывающего окна в другое. Все ссылки с data-rel="popup" внутри всплывающего окна ничего не сделают.
Это также означает, что пользовательские меню выбора не будут работать во всплывающих окнах, поскольку они сами реализуются с помощью всплывающих окон. Если вы поместите меню выбора внутри всплывающего меню, оно будет отображено как собственное меню выбора, даже если вы укажете data-native-menu="false".
Официальная документация: http://api.jquerymobile.com/popup/
Существует доступное решение этой проблемы, но его нельзя использовать в этом случае. Чтобы обходной путь работал, одно всплывающее окно должно быть закрыто до открытия второго. К сожалению, здесь это невозможно.
Второй ответ
Это также известно как падение через события. Это холодная ошибка javascript, хорошо, не ошибка perse, потому что javascript никогда не предназначался для такой работы.
В основном, когда вы нажимаете на один элемент, событие click попадает на элемент ниже.
Это можно предотвратить с помощью следующих функций:
А вот пример jsFiddle, чтобы вы могли понять эту проблему: http://jsfiddle.net/Gajotres/Xz2np/
$('#page1').live('pagebeforeshow',function(e,data){
$('.someDiv').live('click', function (e) {
alert('Event is not going to propagate to content div, thus not hiding a header');
event.stopPropagation();
event.stopImmediatePropagation();
});
});
Чтобы понять эту проблему, просто нажмите на пример DIV, затем прокомментируйте эти 2 строки, снова запустите пример и снова нажмите на DIV.
Одна последняя вещь
Это будет звучать грубо, но это нужно сказать. Не забывайте время от времени принимать ответ. Я вижу, я дал вам несколько ответов на ваши предыдущие вопросы. Я обычно не против этого, но другие делают, и они не помогут вам.