【问题标题】:jQuery .show working but not .hide when using slideToggle使用 slideToggle 时 jQuery .show 工作但不是 .hide
【发布时间】:2011-11-02 00:25:13
【问题描述】:

我在我的网站上使用 jQuery 进行多个切换菜单。但是,如果我将它的初始加载从 .show 更改为 .hide 它将不起作用。

我的js文件是:

jQuery(document).ready(function($) {
$('div ul.menu').hide();
$('h2.trigger').click(function() {
$(this).toggleClass("active").next().slideToggle('slow');
return false;
});
});

我的多个菜单的 html 是这样的:

<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<div>
<ul class="menu">
<li></li>
</ul>
</aside>

<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<div>
<ul class="menu">
<li></li>
</ul>
</aside>

<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<div>
<ul class="menu">
<li></li>
</ul>
</aside>

任何想法为什么这不起作用?

【问题讨论】:

  • 您有三个打开的​​&lt;div&gt; 容器。也许是一个错字,或者你没有意识到你不能让它们打开。 W3C validator 捕捉到这样的错误。

标签: javascript jquery html wordpress slidetoggle


【解决方案1】:

只需去掉你多余的div 标签。您的 next() 正在选择它而不是您尝试定位的 ul.menu。像这样:

<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<ul class="menu">
<li>Test</li>
</ul>
</aside>

<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<ul class="menu">
<li>Test</li>
</ul>
</aside>

<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<ul class="menu">
<li>Test</li>
</ul>
</aside>

您还需要修改以下行

$('div ul.menu').hide();

省略 div

$('ul.menu').hide();

注意:这似乎与 .show() 一起使用的原因是您的 div 默认显示,因此在错误项目上调用 .show() 的事实不会被注意到。

【讨论】:

  • 我打错了代码,我的错。应该有关闭div的。 div 是 Wordpress 在 WP 3.0 中生成自定义菜单的方式的结果。我不相信有办法删除它们,但我正在研究。
  • 你是对的,我发现了如何从 Wordpress 菜单中删除无用的 div。
猜你喜欢
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多