jQuery 对话框中的 Z 索引。自动建议列表未正确显示

发布于 2024-11-02 05:05:10 字数 1162 浏览 5 评论 0原文

我在 jQuery 对话框中显示自动建议框时遇到问题。无论如何,自动建议列表都会显示在对话框下方。我尝试将 autosuggest 的 z-index 属性设置为 > 1004.但运气不佳。

下面是屏幕截图。

在此处输入图像描述

这是我用来设置自动建议列表样式的 CSS 类:

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;
}

我已在此上传了完整的代码jsfiddle 页面。你可以清楚地看到那里的问题。我该如何修复它?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

月亮坠入山谷 2024-11-09 05:05:10

根本原因是最外面的两个元素有overflow:hidden

解决这个问题的最简单方法是:

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

如果您对使用 !important 不满意(这不是一个好的做法),您可以找到 overflow:hidden 实际上的位置正在应用,并在那里修复它。

快速修复版本:http://jsfiddle.net/mNQVr/在 Chrome、Firefox、IE 中测试

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)

临风闻羌笛 2024-11-09 05:05:10

这是你可以做的:

$("#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"});
             }
});

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"});
             }
});
情绪操控生活 2024-11-09 05:05:10

这可以做到:

ul.as-list {
    position: fixed;
    /*...*/
}

This may do it:

ul.as-list {
    position: fixed;
    /*...*/
}
旧伤还要旧人安 2024-11-09 05:05:10

它应该像我在您提供的 jsfiddle 链接中测试的那样工作:

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;
}

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文