【问题标题】:jQuery contextMenu: Submenu is aligned far from main menujQuery contextMenu:子菜单远离主菜单对齐
【发布时间】:2022-06-28 02:02:54
【问题描述】:

我正在使用 jQuery 数据表,在右键单击时,我想显示一个带有子菜单的菜单。 菜单显示正常,但是子菜单离主菜单很远

我正在为菜单和子菜单创建列表

HTML 就像:

//Context menu
$(document).contextmenu({
  delegate: ".divRightClick",
  menu: "#callOptions"

});
.ui-icon {
  background-position: left !important;
  background-image: none !important;
}

.ui-icon-dial {
  background-image: url('/images/BOContact_16x16.png') !important;
  margin-top: 5px;
}

.ui-menu-item-wrapper .ui-state-active .ui-icon {
  background-image: url('/images/BOContact_16x16.png') !important;
  border: none !important;
  background: #FCFDFD !important;
  cursor: pointer;
  overflow: no-display;
  width: 100px !important;
}

.ui-icon-work {
  background-image: url('/images/work.png') !important;
  margin-top: 5px;
}

.ui-icon-home {
  background-image: url('/images/telephone.png') !important;
  margin-top: 30px;
}

.ui-icon-cell {
  background-image: url('/images/Phone_16x16.png') !important;
  margin-top: 57px;
}

.ui-menu .ui-menu-item {
  margin-left: 25px !important;
  margin-top: 5px !important;
}

.ui-menu .ui-front {
  margin-left: -10px !important;
}

.ui-menu-item .ui-menu-item-wrapper.ui-state-active {
  background: #FCFDFD !important;
  /*font-weight: bold !important;*/
  /*color: #ffffff !important;*/
  /* border: 1px solid #580201;*/
  cursor: pointer;
  overflow: no-display;
  width: 80% !important;
  color: #000000 !important;
}

.ui-icon .ui-icon-work .ui-menu-item-wrapper .ui-state-active {
  background-image: url('/images/work.png') !important;
  /*font-weight: bold !important;*/
  /*color: #ffffff !important;*/
  /* border: 1px solid #580201;*/
  cursor: pointer;
  overflow: no-display;
  width: 80% !important;
  color: #000000 !important;
}

.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
  border: none;
  font-weight: normal;
  color: #000000 !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.ui-contextmenu/1.18.1/jquery.ui-contextmenu.min.js"></script>



<body>
  <div class="divRightClick"></div>

  <ul id="callOptions" style="width: 144px; border: 1px solid #000000 !important; display:none;">
    <li>
      <div><span class="ui-icon ui-icon-dial"></span>Dial</div>
      <ul aria-expanded="false" class="clsCallMenu" style="top: 10px; left: 120.5px; display: none;" aria-hidden="true">
        <li data-command="Work">
          <div><span class="ui-icon-work" id="ui-id-3" tabindex="-1" role="menuitem"></span>Work</div>
        </li>
        <li data-command="Home">
          <div><span class="ui-icon-home" id="ui-id-4" tabindex="-1" role="menuitem"></span>Home</div>
        </li>
        <li data-command="Cell">
          <div><span class="ui-icon-cell" id="ui-id-5" tabindex="-1" role="menuitem"></span>Cell</div>
        </li>
      </ul>
    </li>
    <li>
      <div><span class="ui-icon "></span>Quick Email</div>
    </li>
    <li>
      <div><span class="ui-icon "></span>Refresh</div>
    </li>
  </ul>

</body>

我试图将我的代码添加到 sn-p 中,但是,我遇到了脚本错误,并且看起来 contextMenu.js 给出了 404 错误。在我的实际代码中,我没有收到此错误

【问题讨论】:

标签: jquery css jquery-ui contextmenu jquery-contextmenu


【解决方案1】:

考虑以下示例。它包括许多 CSS 更改。

$(function() {
  $(document).contextmenu({
    delegate: ".divRightClick",
    menu: "#callOptions"
  });
});
.ui-icon {
  background-position: left;
  background-image: none;
}

.ui-icon-dial {
  background-image: url('/images/BOContact_16x16.png');
  margin-top: 5px;
}

.ui-menu-item-wrapper .ui-state-active .ui-icon {
  background: #FCFDFD url('/images/BOContact_16x16.png');
  border: none;
  cursor: pointer;
  overflow: hidden;
}

.ui-icon-work {
  background-image: url('/images/work.png');
  margin-top: 5px;
}

.ui-icon-home {
  background-image: url('/images/telephone.png');
  margin-top: 30px;
}

.ui-icon-cell {
  background-image: url('/images/Phone_16x16.png');
  margin-top: 57px;
}

.ui-menu .ui-menu-item {
  margin-top: 5px;
}

.ui-menu-item .ui-menu-item-wrapper.ui-state-active {
  background: #FCFDFD;
  cursor: pointer;
  overflow: hidden;
  width: calc(100% - 20px);
  color: #000000;
}

.ui-icon .ui-icon-work .ui-menu-item-wrapper .ui-state-active {
  background-image: url('/images/work.png') !important;
  cursor: pointer;
  overflow: hidden;
  width: calc(100% - 20px);
  color: #000000;
}

.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
  border: none;
  font-weight: normal;
  color: #000000;
}
<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="//code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.ui-contextmenu/1.18.1/jquery.ui-contextmenu.min.js"></script>

<div class="divRightClick">
  Right Click Me
</div>
<ul id="callOptions">
  <li>
    <div><span class="ui-icon ui-icon-dial"></span>Dial</div>
    <ul aria-expanded="false" class="clsCallMenu" style="top: 10px; left: 120.5px; display: none;" aria-hidden="true">
      <li data-command="Work">
        <div><span class="ui-icon-work" id="ui-id-3" tabindex="-1" role="menuitem"></span>Work</div>
      </li>
      <li data-command="Home">
        <div><span class="ui-icon-home" id="ui-id-4" tabindex="-1" role="menuitem"></span>Home</div>
      </li>
      <li data-command="Cell">
        <div><span class="ui-icon-cell" id="ui-id-5" tabindex="-1" role="menuitem"></span>Cell</div>
      </li>
    </ul>
  </li>
  <li>
    <div><span class="ui-icon "></span>Quick Email</div>
  </li>
  <li>
    <div><span class="ui-icon "></span>Refresh</div>
  </li>
</ul>

overflow 属性具有以下值:

  • visible - 默认。溢出没有被剪裁。内容呈现在元素的框外
  • hidden - 溢出被剪掉,其余内容不可见
  • scroll - 溢出被剪掉,并添加滚动条以查看其余内容
  • auto - 与滚动类似,但仅在必要时才添加滚动条

在您的 CSS 中,您使用 no-displayoverflow 不支持它。

我还删除了很多 !important 部分,因为它们不应该被需要。

由于本地相对路径,我无法加载图像,但现在间距似乎正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多