jQuery:在切换更改类之后切换元素

时间:2012-11-25 20:59:59

标签: javascript jquery jquery-selectors

我想提出以下建议: 在树上点击我的下一个ul应该切换(工作) 此后(!)该类应该从treeExpanded更改为treeCollapsed,但我不明白...

    ...
    <li>
        <a class="treeExpanded">Toggle</a>
        <span>xyz</span>
        <ul class="steps">
        ...
        </ul>
    </li>
    ...

有效,但课程立即更改:

    $j('.treeExpanded').click (function () {
        $j(this).toggleClass('treeCollapsed','treeExpanded').nextAll('ul').slideToggle("slow");
    });

也有效,但课程立即改变:

    $j('.treeExpanded').click (function () {
        $j(this).nextAll('ul').slideToggle("slow");
        $j(this).toggleClass('treeCollapsed','treeExpanded');
    });

不起作用:

    $j('.treeExpanded').click (function () {
        $j(this).nextAll('ul').slideToggle("slow", function () {
            $j(this).parents('a:first').toggleClass('treeCollapsed','treeExpanded');
        });
    });

2 个答案:

答案 0 :(得分:1)

您可以将元素保存在变量中,然后在回调中使用它

$j('.treeExpanded').click (function () {
    $this = $j(this);
    $this.nextAll('ul').slideToggle("slow", function () {
        $this.toggleClass('treeCollapsed','treeExpanded');
    });
});

答案 1 :(得分:0)

你可以这样试试:

  $('.treeExpanded').toggle(function(){ 
     $(this).nextAll('ul').removeClass("treeCollapsed");
     $(this).addClass("treeExpanded");
  }, function(){ 
     $(this).nextAll('ul').removeClass("treeExpanded");
     $(this).addClass("treeCollapsed");
  });

这些方面的东西。我发现这比搞乱点击本身要好得多。