Автозаполнение jQuery-UI не отображается должным образом, проблема z-index

71

В настоящее время я реализую автозаполнение jQuery UI в интернет-магазине моих клиентов. Проблема заключается в следующем: элемент, в котором находится автозаполнение, имеет более высокий z-индекс, а затем z-индекс автозаполнения. Я попытался вручную установить z-index автозаполнения, но у меня возникло ощущение, что пользовательский интерфейс jQuery перезаписывает это.

На самом деле мой вопрос является дубликатом списка предложений автозаполнения неправильного z-индекса, как я могу изменить?, но поскольку ответа не было, я думал о его предоставлении еще одна попытка.

Любая помощь приветствуется!

Мартейн

  • 3
    Вам это поможет? stackoverflow.com/questions/3549860/...
  • 2
    Поскольку примеров кода нет, я мог бы рекомендовать установить z-index, как вы пытались ранее, и установить его !important
Показать ещё 1 комментарий
Теги:
autocomplete

11 ответов

91
Лучший ответ

Почему бы не использовать z-index и! important?

.ui-autocomplete { position: absolute; cursor: default;z-index:30 !important;}  
  • 0
    Прошло много времени с тех пор, как я опубликовал этот вопрос, но я смутно помню, что javascript (и, следовательно, jQuery) мог перезаписывать свойства CSS, даже если они определены как "! Important".
  • 2
    это работает над моим проектом ...
Показать ещё 5 комментариев
59

Во время поиска я нашел эту тему (http://forum.jquery.com/topic/alternating-style-on-autocomplete). По-видимому, единственный способ изменить стиль окна автозаполнения - это выполнить через javascript:

    open: function(){
        $(this).autocomplete('widget').css('z-index', 100);
        return false;
    },
  • 1
    Почему вы возвращаете ложное?
  • 0
    Общая парадигма в обработчиках событий заключается в том, что возвращение false предотвратит всплывание события. Хотя через четыре года я понятия не имею, было ли это действительно необходимо в этой ситуации ..
Показать ещё 1 комментарий
10

Измените z-индекс родительского Div, в меню автозаполнения будет указатель div z-index + 1

  • 1
    Автозаполнение добавляется в конец содержимого тела, поэтому оно будет иметь z-индекс bodys + 1
  • 8
    @Marius, вы можете использовать опцию appendTo чтобы указать разметке меню, куда идти, в противном случае вы можете добавить класс ui-front к одному из родительских элементов ввода.
Показать ещё 3 комментария
8

В CSS jQuery UI:

.ui-front { z-index: 9999; }
  • 1
    Добро пожаловать на StackOverFlow.com, это должен быть комментарий или более подробный ответ.
  • 0
    Работал на меня, ура.
8

Попробуйте это, вы можете манипулировать z-индексом во время выполнения или инициализировать

$('#autocomplete').autocomplete({
    open: function(){
        setTimeout(function () {
            $('.ui-autocomplete').css('z-index', 99999999999999);
        }, 0);
    }
});
2
open: function () {
    $(this).autocomplete('widget').zIndex(10);
}
2

Если вы можете обеспечить более высокий z-индекс при вводе текста автозаполнения, это решение вашей проблемы.

Список опций автозаполнения jQuery UI вычисляет значение z-индекса, беря z-индекс вводимого текста, к которому он присоединен, и добавляет 1 к этому значению.

Таким образом, вы можете указать z-индекс 999 для ввода текста, автозаполнение будет иметь значение z-index 1000

Взято из http://bugs.jqueryui.com/ticket/5489

<input type="text" class="autocomplete" style="z-index:999;" name="foo">
0

добавить следующий

.ui-autocomplete
{
    z-index:100 !important;
}

в файле jquery-custom-ui.css(или мини-, если вы его используете).

0

также посмотрите, к чему вы добавляете элемент. я столкнулся с этой проблемой, когда я добавил автозаполнение к внутреннему div, но когда я добавил автозаполнение к тегу body, проблема исчезла.

0

Дайте ему попробовать в любом случае в вашем css (до script загрузки), а не в firebug:

.ui-selectmenu-menu {
    z-index:100;
}

В моем случае это работает и создает z-индексы типа: 100x (например, 1002)

  • 1
    По какой-то причине установка z-index через CSS не работает. jQuery просто назначает свое собственное значение z-index. Хотя нашел решение (см. Ответ ниже)
-1

Для тех разработчиков, которые все еще используют этот плагин. Попробуйте следующее:

.acResults
{
    z-index:1;
}

Для меня было достаточно с z-index: 1, установить значение, которое вам нужно в вашем случае.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню