单击时隐藏 Div

发布于 2024-12-09 10:43:52 字数 1063 浏览 0 评论 0原文

我有一些 HTML/CSS/JQuery 下拉菜单可以工作。我的伪代码是:

function closeMenus() {
  $('.subMenu').css('display', 'none');
}
#mainMenu ul li .subMenu {
  display: none;
  position: absolute;
}
#mainMenu ul li:hover .subMenu {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mainMenu">
  <ul>
    <li>
      Menu Header
      <div class="subMenu" onClick="closeMenus();">Menu Content</div>
    </li>
  </ul>
</div>

CSS 的工作原理是,当有人将鼠标悬停在菜单标题上时,子菜单会出现在其下方,并在鼠标离开菜单时消失。当用户单击菜单中的某个项目时,我的问题就出现了;我想隐藏菜单。 JavaScript 可以很好地隐藏菜单,但是当用户再次将鼠标悬停在菜单标题上时,它不会重新出现。 CSS 似乎不会覆盖 JavaScript 显示属性。大多数(如果不是全部)链接不会转到其他页面,而只是调用更多 JavaScript。

任何人都知道如何在单击时隐藏子菜单以便它再次可见,或者我是否需要更多的Javascript来在每次有人悬停时显示菜单?

I've got a little HTML/CSS/JQuery drop down menu working. My pseudo code for it is:

function closeMenus() {
  $('.subMenu').css('display', 'none');
}
#mainMenu ul li .subMenu {
  display: none;
  position: absolute;
}
#mainMenu ul li:hover .subMenu {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mainMenu">
  <ul>
    <li>
      Menu Header
      <div class="subMenu" onClick="closeMenus();">Menu Content</div>
    </li>
  </ul>
</div>

The CSS works so when someone hovers over Menu Header, the subMenu appears below it and disappears when the mouse leaves the menu. My problem comes when a user clicks an item in the menu; I'd like to hide the menu. The JavaScript hides the menu fine but when the user mouses over the menu header again, it doesn't reappear. It appears that CSS won't override the JavaScript display property. Most, if not all, of the links won't be going to other pages, just calling more JavaScript.

Anyone have any ideas how to hide the sub menu on click so that it will be again visible, or do I need more Javascript to show the menu every time someone hovers?

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

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

发布评论

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

评论(4

暮色兮凉城 2024-12-16 10:43:52

更充分地使用 JQuery —— 查看 .toggle() 命令并通过单击绑定它:

$('.subMenu').click(function() {$(this).toggle();});

然后您可以消除大部分其他代码。

Use JQuery more fully -- look into the .toggle() command and bind it via click:

$('.subMenu').click(function() {$(this).toggle();});

Then you can eliminate most of your other code.

小糖芽 2024-12-16 10:43:52

您尝试使用 CSS 完成一半,使用 jQuery 完成一半。只需使用 jQuery 即可完成这一切: http://jsfiddle.net/hw5qr/

$('.subMenu').click(function() {
    $(this).hide();
});

$('#mainMenu').hover(function() {
    $(this).find('.subMenu').show();
}, function() {
    $(this).find('.subMenu').hide();
});

You're trying to do half of it with CSS and half of it with jQuery. Just do it all with jQuery: http://jsfiddle.net/hw5qr/

$('.subMenu').click(function() {
    $(this).hide();
});

$('#mainMenu').hover(function() {
    $(this).find('.subMenu').show();
}, function() {
    $(this).find('.subMenu').hide();
});
红衣飘飘貌似仙 2024-12-16 10:43:52

Stryle 属性具有最高优先级。

$('.ftpBrowseSubMenu').css('display','none');

make

<div style="display:none">

,因此规则

#mainMenu ul li:hover 

相对于样式属性的优先级较低。所以,你必须用 javascript 来做所有事情。

Stryle attribute has highest priority.

$('.ftpBrowseSubMenu').css('display','none');

make

<div style="display:none">

, so rule

#mainMenu ul li:hover 

has lower priority against style attribute. So, you have to do everything with javascript.

予囚 2024-12-16 10:43:52

就像你已经说过的,元素样式比 css 样式更强(除非你使用 !important)。所以你必须用 Javascript 来完成所有不应该太难的事情。您只需注册另外两个事件侦听器:onmouseover 和 onmouseout。使用它们,您可以将显示属性设置为正确的值,它将以这种方式工作。

Like you already said are element styles stronger than css styles (unless you use !important). So you have to to do everything with Javascript what shouldn't be to hard. You have just to register two more event listener: onmouseover and onmouseout. With them you can set the display property to the correct value and it will work this way.

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