jQuery Slidetoggle问题

时间:2012-02-25 09:20:01

标签: jquery slidetoggle

我的页面侧边菜单中有许多过滤器,允许用户过滤页面上显示的结果。我正在使用jQuery slidetoggle来切换过滤器项的显示。

html如下:

<div id="refinement-container">
<a href="#" class="closed">PRODUCT</a>
<ul id="product" class="items">      
    <li>items...</li>
</ul>
</div>

我到目前为止的jQuery是:

 jQuery(document).ready(function() {
  jQuery(".items").hide();
  //toggle the componenet with class msg_body
  jQuery(".closed").click(function()
  {
    jQuery(this).next("ul.items").slideToggle(500);
    jQuery(this).next("ul.items").addclass('opened');
    jQuery(this).next("ul.items").removeclass('closed');

  });

 jQuery(".opened").click(function()
  {
    jQuery(this).next("ul.items").slideToggle(500);
    jQuery(this).next("ul.items").addclass('closed');
    jQuery(this).next("ul.items").removeclass('opened');

  });
}); 

切换工作正常。但是班级没有改变切换,我希望改变,以便我可以将链接的背景图像从+更改为 - 反之亦然。我也试过toggleclass。 此外,我希望能够在正在切换的ul和我单击的链接之间添加另一个html元素,以便按如下方式切换它:

<div id="refinement-container">
<a href="#" class="closed">PRODUCT</a><a href="" class="clear">clear</a>
<ul id="product" class="items">      
    <li>items...</li>
</ul>
</div>

但每当我在其间添加一个元素时,切换功能就会停止工作。有办法解决这个问题吗?

有人可以帮我解决这个问题吗?

提前谢谢

3 个答案:

答案 0 :(得分:0)

你在这里犯了两个错误。

- 您想要更改单击链接的类,而不是正在滑动切换的列表的类。

-Theres no class()功能。您可以使用attr()函数更改类属性..但使用addClass()removeClass()更清晰。

所以,而不是:

jQuery(this).next("ul.items").class('opened');
...
jQuery(this).next("ul.items").class('closed');

使用它:

jQuery(this).removeClass('closed').addClass('opened');
...
jQuery(this).removeClass('opened').addClass('closed');

答案 1 :(得分:0)

jQuery中没有.class方法。

要将类添加到元素,您应该使用addClass方法。 对于删除类,您应该使用removeClass方法。

答案 2 :(得分:0)

如果您添加<a>,则会导致选择器next("ul.items")

陷入困境

您可以简单地将行更改为:

jQuery('.reset').next("ul.items").slideToggle(500);

哦,现在我看到别的东西(可能是原因):

<ul items">

也没有任何意义:

<ul class="items">

<ul id="items">

对我有用,这是一个小提琴:http://jsfiddle.net/REjdP/