Z-index in jQuery dialog. Autosuggest list not dis

2019-02-19 23:18发布

I have a problem displaying the autosuggest box inside a jQuery dialog. The auto suggest list is displayed under the dialog no matter what. I have tried setting up the z-index property of autosuggest to > 1004. But no luck.

Below is the screenshot.

Enter image description here

This is the CSS class I have used to style the autosuggest list:

ul.as-list {
    position: absolute;
    list-style-type: none;
    margin: 2px 0 0 0;
    padding: 0;
    font-size: 14px;
    color: #000;
    font-family: "Lucida Grande", arial, sans-serif;
    background-color: #fff;
    background-color: rgba(255,255,255,0.95);
    box-shadow: 0 2px 12px #222;
    -webkit-box-shadow: 0 2px 12px #222;
    -moz-box-shadow: 0 2px 12px #222;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    z-index:6000;
}

li.as-result-item, li.as-message {
    margin: 0 0 0 0;
    padding: 5px 12px;
    background-color: transparent;
    border: 1px solid #fff;
    border-bottom: 1px solid #ddd;
    cursor: pointer;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    z-index:6000;
}

I have uploaded the complete code in this jsfiddle page. You can see the problem there clearly. How can I fix it?

4条回答
戒情不戒烟
2楼-- · 2019-02-19 23:43

It should work as I tested that in jsfiddle link you provided:

div.as-results{position:relative;z-index:1;}
div.as-results ul.as-list {
    position: fixed;
    list-style-type: none;
    margin: 2px 0 0 0;
    padding: 0;
    font-size: 14px;
    color: #000;
    font-family: "Lucida Grande", arial, sans-serif;
    background-color: #fff;
    background-color: rgba(255,255,255,0.95);
    box-shadow: 0 2px 12px #222;
    -webkit-box-shadow: 0 2px 12px #222;
    -moz-box-shadow: 0 2px 12px #222;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    z-index:6000;
}
查看更多
放我归山
3楼-- · 2019-02-19 23:48

The root cause is that the outermost two elements have overflow: hidden.

The simplest way to fix that is:

.ui-dialog, .ui-dialog-content {
    overflow: visible !important
}

If you're not happy with using !important (it's not good practise), you can find the place where overflow: hidden is actually being applied, and fix it there.

Quick fix version: http://jsfiddle.net/mNQVr/ (tested in Chrome, Firefox, IE)

查看更多
ら.Afraid
4楼-- · 2019-02-20 00:00

This may do it:

ul.as-list {
    position: fixed;
    /*...*/
}
查看更多
爱情/是我丢掉的垃圾
5楼-- · 2019-02-20 00:01

This is what you can do:

$("#txtTagAdd").autoSuggest(data.items, {
                        asHtmlID:"tagg",
                        selectedItemProp: "name",
                        searchObjProps: "name",
                        selectionLimit:4,
                        limitText: "Only 4 tags unique tags allowed for each suggestion",
             resultsComplete: function(){
                 var h = $('ul.as-list').innerHeight() + 20;
                 $('div.as-results').css({"height": h + "px"});
             }
});
查看更多
登录 后发表回答