为什么jquery .next和.toggle不能在这里工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么jquery .next和.toggle不能在这里工作相关的知识,希望对你有一定的参考价值。

我想知道jQuery中的.next和.toggle是否随最新版本而改变。我曾经使用的代码,并没有对该代码进行任何更改。

脚本:(它应该打开子菜单)

$(document).ready(function() {
  $('.dropdown-submenu a.HasDropDown').on("click", function(e) {
    $(this).next('ul').toggle();
    e.stopPropagation();
    e.preventDefault();
    //alert("menu clicked");
  });
});
<li class="dropdown-submenu">
  <a style="color: gainsboro; background-color: black !important;" href="/EntityPersonAddress/List">
    	    Addresses
    	</a>
</li>

<li class="dropdown-submenu">
  <span>
    	    <a class="HasDropDown" style="color: gainsboro; background-color: black !important;" href="#">
    		   XX Management
    	    </a>
    	</span>
  <ul class="dropdown-menu">
    <li class="dropdown-submenu">
      <a style="color: gainsboro; background-color: black !important;" href="/TCO/Edit">
    		    TCO
    		</a>
    </li>
    <li class="dropdown-submenu">
      <a style="color: gainsboro; background-color: black !important;" href="/Report/TCO">
    		    TCO Reports
    		</a>
    </li>
  </ul>
</li>
答案

你使用的选择器不好,see this working fiddle

$(document).ready(function() {
  $('.dropdown-submenu a.HasDropDown').on("click", function(e) {
    $(this).parent().next('ul').toggle();
    e.stopPropagation();
    e.preventDefault();
    //alert("menu clicked");
  });
});

.dropdown-menu元素与.HasDropDown(它是span元素)的父级处于同一级别。

以上是关于为什么jquery .next和.toggle不能在这里工作的主要内容,如果未能解决你的问题,请参考以下文章

jquery toggle 方法被废除的替代方法

jQuery——动画

在 jQuery 1.9 删除 .toggle(function,function) 后有啥替代方法?

为啥 next() 在 jquery 中不起作用

.next plus .toggle 在 IE8 中不起作用

JQuery 的toggle() 方法