Как "отключить" стиль выпадающих окон jQuery Mobile?
мне нужно отключить стиль jQuery Mobile <select>
раскрывающиеся. В конечном счете, я бы хотел, чтобы само устройство (iPhone, Android,Blackberry и т. д.) определить, как <select>
падение вниз смотрит.
В настоящее время моя разметка (количество опций уменьшено для целей отображения):
<div data-role="fieldcontain">
<label for="state">State:</label>
<select name="state" id="state" data-role="none">
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN" selected="selected">Minnesota</option>
<option value="MS">Mississippi</option>
</select>
</div>
Я попытался с помощью data-role="none"
на <select>
но ничего не изменилось.
есть ли способ "отключить" jQuery Mobile только для выбора выпадающего списка?
8 ответов
согласно http://jquerymobile.com/test/docs/forms/docs-forms.html
Если вы предпочитаете, чтобы конкретный элемент управления формой оставался нетронутым jQuery Mobile, просто дайте этому элементу атрибут data-role="none". Например:
<label for="foo">
<select name="foo" id="foo" data-role="none">
<option value="a" >A</option>
<option value="b" >B</option>
<option value="c" >C</option>
</select>
начиная с версии 1.1 правильный способ сделать это: data-enhance="false"
Вам также нужно будет добавить эту строку в config:
$.mobile.ignoreContentEnabled = true;
http://jquerymobile.com/test/docs/forms/forms-all-native.html
внутри mobileinit исправьте селектор jqm, чтобы вести себя так, как ожидалось:
$.mobile.selectmenu.prototype.options.initSelector = 'select:not( :jqmData(role="none"), :jqmData(role="slider") )';
хотя этот вопрос считается ответом, я хотел бы добавить еще несколько строк, так как ответ не сработал "из коробки" для меня, и это может сэкономить время для других.
в моем случае я отключаю собственные раскрывающиеся списки для приложения смартфона, когда он запускается в Android (так как у него есть некоторые уродливые проблемы при открытии собственных раскрывающихся списков, о которых уже сообщалось в другом потоке). "Волшебное заклинание", которое решило проблему для меня, заключается в следующем строки:
$(document).bind('mobileinit',function(){
if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
$("select").attr("data-native-menu","true");
} else {
$("select").attr("data-native-menu","false");
$.mobile.selectmenu.prototype.options.nativeMenu = false;
}
});
эти строки находятся в скрипте настройки, загруженном сразу после jQuery и непосредственно перед jQuery-Mobile. важно сохранить порядок, в противном случае элементы управления уже инициализированы, и это не имеет никакого эффекта!
Я надеюсь, что этот совет может сэкономить время кому-то!
Да, вы должны войти в файл CSS, который управляет раскрывающимся стилем jQuery Mobile UI и удалить любой стиль, который вы не хотите появляться.
Они все еще работают над этим, работают в последнем коде git, но я бы не рекомендовал его: https://github.com/jquery/jquery-mobile/issuesearch?state=closed&q=select#issue/350
использование этого свойства должно помочь
$.mobile.selectmenu.prototype.options.nativeMenu = true; // in your override file...
просто попробовать data-native-menu="true"
от doc : Добавив атрибут data-native-menu= "true" в select, платформа будет использовать собственное меню выбора браузера при нажатии кнопки select. Поскольку этот параметр не использует логику синтаксического анализа и генерации меню, он значительно быстрее, чем версия пользовательского меню. Пользовательские меню выбора добавляют возможность темы выбора и обеспечивают визуальную согласованность между платформами кроме того, он исправляет некоторые отсутствует функциональность на некоторых платформах: поддержка optgroup на Android, возможность множественного выбора на WebOS и добавляет элегантный способ обработки значений-заполнителей.