.hover 有效,点击无效

.hover Works, On Click doesn't

所以这让我很头疼。 我正在制作一个 "pulldown accordion submenu"(因为没有更好的名字)。 我的脚本有效,但仅在悬停时有效。如果我尝试使用 .click、.on("click")、.on("click"、"li") 等,则没有任何效果。该脚本仅在使用 .hover 时有效。

注意! 只有“#TopMenu”应该有点击事件。子菜单(“#accordion”)将悬停。

有什么想法吗?

工作:

$(document).ready(function () {

    $('#accordion li').hover(function () {
        $(this).find('ul').stop(true, true).slideDown()
    }, function () {
        $(this).find('ul').stop(true, true).slideUp()
    }).find('ul').hide()

$('#TopMenu li').hover(function() {

        $(this).find('li').stop(true, true).slideDown()
    }, function () {
        $(this).find('li').stop(true, true).slideUp()
    }).find('li').hide()

});

将“#TopMenu”更改为“点击”无效:

$(document).ready(function () {

    $('#accordion li').hover(function () {
        $(this).find('ul').stop(true, true).slideDown()
    }, function () {
        $(this).find('ul').stop(true, true).slideUp()
    }).find('ul').hide()

$('#TopMenu li').on('click', function() {

        $(this).find('li').stop(true, true).slideDown()
    }, function () {
        $(this).find('li').stop(true, true).slideUp()
    }).find('li').hide()

});

我这里有一个工作测试:http://jsbin.com/nidazuq/3/embed?html,js,output

我快疯了,我四处寻找解决方案。请帮忙

一个页面的 ID 应该是唯一的。您在页面中使用了两次。添加了 fiddle 并进行了一些更改。

$('#TopMenu li').on('click', function() {
  $(this).children('ul').slideToggle();
});
$("#TopMenu li ul li > a").hover(function(){
  $(this).next('ul').slideToggle();
})
#TopMenu li ul, .firstStep ul ul, .firstStep ul{display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="TopMenu">
  <li><a href="#" class="menu_heading" rel="menu_heading">CLICK ME</a>
    <ul id="accordion">
      <li> <a href="#" class="history_heading" rel="history_heading">HISTORY</a>
        <ul>
          <li><a href="#">Link One</a></li>
          <li><a href="#">Link Two</a></li>
          <li><a href="#">Link Three</a></li>
          <li><a href="#">Link Four</a></li>
          <li><a href="#">Link Five</a></li>
        </ul>
      </li>
      <li> <a href="#" class="geography_heading" rel="geography_heading">GEOGRAPHY</a>
        <ul>
          <li><a href="#">Link One</a></li>
          <li><a href="#">Link Two</a></li>
          <li><a href="#">Link Three</a></li>
          <li><a href="#">Link Four</a></li>
          <li><a href="#">Link Five</a></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

首先,您对多个元素使用相同的 ID。这是错误的。对于 selection.Change id='TopMenu'class='TopMenu',您应该使用 class。其次,'click' 函数未被 'li' 元素触发。你应该听 'a' 元素的点击功能。

$('.TopMenu li a').on('click', function() {});

我不熟悉 slideDown 和 slideUp 函数,但您可以从那里继续。并且不要忘记 $(this) 元素引用 <a href="#" class="menu_heading" rel="menu_heading">CLICK ME</a> 用于此点击功能。