为什么 ui-dialog z-index 没有变化?

Why doesn't ui-dialog z-index change?

我有一个 div 和 z-index: 1000000,并且使用 JQuery UI,我试图在它上面显示一个对话框。所以我在 CSS

中添加了

.ui-dialog{z-index: 1000002 !important;}

但对话框仍在另一个 div 下方,使用 Chrome 检查器查看时,我看到 z-index 为 101。从 Chrome 检查器中我看到:

<div tabindex="-1" role="dialog" class="ui-dialog ui-corner-all ui-widget ui-widget-content ui-front ui-dialog-buttons" aria-describedby="dialog" aria-labelledby="ui-id-3" style="height: auto; width: 300px; top: 379.113px; left: 284.488px; z-index: 101;">

这就像我对 .ui-dialog 的定义没有被阅读,但我不明白为什么。

对话框也是模态的,如果我添加

.ui-front {z-index: 1000001 !important;}

z-index 为 1000000 的 div 上方出现对话框,但我无法单击它(它=对话框)。

你能帮帮我吗?

Edit1:我正在使用 JQuery 3.2.1 和 JQuery UI 1.12.1,Redmond 主题

Edit2: 我正在使用以下代码打开对话框

$("#dialog").dialog({
    autoOpen: false, 
    modal: true,
    draggable: false,
    resizable: false,
    title: title,
});

var buttons = {};
buttons[noButtonName] = function() {
    $( this ).dialog( "close" );
    noFun();
};
buttons[yesButtonName] = function() {   
    $( this ).dialog( "close" );
    okFun();
};
$('#dialog').dialog('option', 'buttons', buttons);
$("#dialog").dialog("open");

Edit3:对话框的 HTML 如下:

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable">
    <div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
      <span id="ui-dialog-title-dialog" class="ui-dialog-title">Add</span>
      <a class="ui-dialog-titlebar-close ui-corner-all" href="#"><span class="ui-icon ui-icon-closethick">close</span></a>
   </div> 

    <div class="inline" style="position: relative; width: 100%;" id="dialog">
        <div class="inline">
            <div id="dialogMessage"></div>
        </div>

    </div>

</div>

当我使用更基本的示例时,我无法重现问题。

$(function() {
  function fun(r) {
    console.log(r)
  };

  $("#dialog").dialog({
    classes: {
      "ui-dialog": "inline higher"
    },
    modal: true,
    buttons: {
      Yes: function() {
        fun("yes");
        $(this).dialog("close");
      },
      No: function() {
        fun("no");
        $(this).dialog("close");
      }
    }
  });
});
div.high {
  z-index: 1000000;
}

div.higher {
  z-index: 1000002;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div class="inline" title="Add" id="dialog">
  <div class="inline">
    <div id="dialogMessage">Want to have some fun?</div>
  </div>
</div>

<div class="high">
  <p>Sed vel diam id libero <a href="http://example.com">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>
</div>

您可以考虑使用 classes 选项将 类 添加到对话框中。这可能看起来像:

$("#dialog").dialog({
  classes: {
    "ui-dialog": "inline higher"
  }
});

然后您可以在 CSS:

中使用这些
.inline {
  display: inline-block;
}
.higher {
  z-index: 1000001;
}

如果您可以更新您的 post,我或许可以提供进一步的帮助。