jQuery-UIのオートコンプリートがうまく表示されない、z-indexの問題


83

現在、クライアントのWebショップでjQueryUIのオートコンプリートを実装しています。問題は、オートコンプリートが存在する要素が、オートコンプリートのzインデックスよりも高いzインデックスを持っていることです。オートコンプリートのz-indexを手動で設定しようとしましたが、jQueryUIがこれを上書きしているように感じました。

実際、私の質問はオートコンプリート候補リストの重複したz-indexですが、どうすれば変更できますか?、でも答えがなかったので、もう一度やってみようと思いました。

どんな助けでも大歓迎です!

マルティン


3
これはあなたを助けますか?stackoverflow.com/questions/3549860/…–
Tim

2
コード例がないため、以前に試したようにz-indexを設定し、次のように設定することをお勧めします!important
Igor Dymov 2011

同じ問題が発生していますが、バグはChromeでのみ発生します。ここで解決策は機能していないようです。誰かが私を助けることができますか?
Nivs 2015年

回答:


104

使用z-indexして!important

.ui-autocomplete { position: absolute; cursor: default;z-index:30 !important;}  

この質問を投稿してからしばらく経ちましたが、JavaScript(したがってjQuery)が「!important」として定義されていてもCSSプロパティを上書きできたことを漠然と覚えています。
Martijn 2012年

1
カスタムスタイルシートで!importantを使用した+1も完全に機能し、open()コールバックを使用するよりもはるかに優れたソリューションでした。
アレックスフェアチャイルド

私はこの解決策がはるかに優れていることに同意するので、私自身に賛成してこの答えを受け入れました。でも、私は答えをチェックしていません...
マルタイン

私はjQueryを初めて使用しますが、この答えは非常に優れています。私のために働いた。.ui-autocompleteがどこにあるかを見つけるのに苦労しましたが、最終的にjquery-ui.cssで見つけたので、z-indexとビオラが機能しました。
atsurti 2014年

素晴らしい答え。私も一緒に働いた。ちょっとした情報を追加するだけです。まず、オートコンプリートデータはui-autocompleteというクラスに含まれています。このクラスは、上記のようにcssでスタイルを設定できます。次に、Bootstrapでオートコンプリートを使用している場合、常に一番上にあるメニューのz-indexは1030なので、これを1031にする必要があります。どうも。
ランディグリーンコーン2014年

60

検索中にこのトピックを見つけました(http://forum.jquery.com/topic/alternating-style-on-autocomplete)。どうやらオートコンプリートボックスのスタイルを変更する唯一の方法は、javascriptを介してそれを行うことです:

    open: function(){
        $(this).autocomplete('widget').css('z-index', 100);
        return false;
    },

2
なぜあなたは偽を返すのですか?
noyo 2013

イベントハンドラーの一般的なパラダイムは、falseを返すと、イベントがバブリングするのを防ぐというものです。4年後、私はそれがこの状況で実際に必要であったかどうか
わかり

2
たとえそれが何年も後であっても、応答をありがとう!確かに、これはあなたの場合には必要ではなく、他の人に望ましくない動作を引き起こす可能性さえあります。いずれにせよ、この問題には現在標準的な解決策があります(ui-frontクラス+appendToウィジェットオプション):api.jqueryui.com/theming/stacking-elements
Noyo 2015

10

親Divのz-indexを変更すると、オートコンプリートメニューにdivのz-index +1が表示されます。


1
オートコンプリートは本文のコンテンツの最後に追加されるため、本文はz-index + 1
Marius

8
@Marius、appendToオプションを使用してメニューマークアップに移動先を指示できます。それ以外の場合ui-frontは、入力の親要素の1つにクラスを追加できます。
noyo 2013

1
もう1つ:親divは相対位置( 'position:relative')を使用する必要があります。そうしないと、jQueryはそのz-indexを決定できません(bugs.jqueryui.com/ticket/5489を参照)
Felix Schwarz

9

のCSSでjQuery UI

.ui-front { z-index: 9999; }

1
StackOverFlow.comへようこそ。これはコメントまたはより複雑な回答である必要があります。
ディエゴCナシメント2014年

それは間違っています。jqueryuiが何か新しいものをポップアップする必要がある場合、前のz-indexを取得して1ずつ増やし、9999を使用すると1回だけ機能し、次のui要素のz-indexは10.000になり、再び問題が発生します。
アンドレアマウロ

8

これを試してください。実行時または初期化時にz-indexを操作できます

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

2

オートコンプリートテキスト入力に対してより高いz-indexを適用できる場合、これが問題の解決策です。

jQuery UIオートコンプリートオプションリストは、添付されているテキスト入力のz-indexを取得して、そのz-index値を計算し、その値に1を加算します。

したがって、テキスト入力に999のz-indexを指定すると、オートコンプリートのz-index値は1000になります。

http://bugs.jqueryui.com/ticket/5489から取得

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


0

また、アイテムを追加する場所も確認してください。オートコンプリートを内部divに追加したときにこの問題に遭遇しましたが、オートコンプリートをbodyタグに追加すると、問題は解決しました。



-1

とにかく、firebugではなくcssで(スクリプトをロードする前に)試してみてください。

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

私の場合、これは機能し、次のようなzインデックスを作成します:100x(たとえば1002)


1
何らかの理由で、CSSを介したz-indexの設定が機能していません。jQueryは、それ自体のz-index値を割り当てるだけです。しかし、解決策を見つけました(以下の回答を参照)
Martijn 2011

-1

以下を追加します

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

jquery-custom-ui.cssファイル(または使用している場合は縮小されたファイル)内。


-1

まだこのプラグインを使用している開発者向け。これを試して:

.acResults
{
    z-index:1;
}

私にとってはz-index:1で十分でした、あなたの場合に必要な値を設定してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.