Javascript jQuery:切换元素,切换后更改类

Javascript jQuery:切换元素,切换后更改类,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我想提交以下文件: 单击树中的下一个ul应切换(工作) 此后(!)类应该从treeExpanded更改为treeCollapsed,但我不明白 ... <li> <a class="treeExpanded">Toggle</a> <span>xyz</span> <ul class="steps"> ... </ul>

我想提交以下文件: 单击树中的下一个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');
        });
    });

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

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

您可以这样尝试:

  $('.treeExpanded').toggle(function(){ 
     $(this).nextAll('ul').removeClass("treeCollapsed");
     $(this).addClass("treeExpanded");
  }, function(){ 
     $(this).nextAll('ul').removeClass("treeExpanded");
     $(this).addClass("treeCollapsed");
  });
沿着这些路线的东西。我发现这比搞乱点击本身要好