.hover Works,On Click不会

时间:2016-08-26 06:13:26

标签: jquery accordion jquery-hover jquery-on

所以这给我带来了很大的威胁。 我正在制作一个“下拉手风琴子菜单”(因为缺少一个更好的名字)。 我的脚本有效,但仅适用于HOVER。如果我尝试使用.click,.on(“click”),. on(“click”,“li”)等,则无效。该脚本仅在使用.hover。

时有效

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

有什么想法吗?

工作:

$(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”更改为CLICK不起作用:

$(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

我为此疯狂,我搜索了高低的解决方案。请帮忙。

2 个答案:

答案 0 :(得分:1)

ID应该是唯一的并且对于页面来说是单一的。您在页面中使用了两次。添加了一些变化。



$('#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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

首先,您对多个元素使用相同的ID。这是错的。您应该使用类进行选择。将id='TopMenu'更改为class='TopMenu'。其次,点击&#39;功能不是由&#39; li&#39;元件。你应该倾听&#39; a&#39;元素的点击功能。

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

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