如何根据Jquery链式语句中的条件在toggle和removeClass之间切换?

时间:2012-09-11 19:04:20

标签: javascript jquery toggle removeclass

我在tap事件绑定中有以下元素处理。

 $el
   .doThis
   .end()
   .find( "a" ).first().removeClass( someClass );

我需要检查条件o.direction == "horizontal",如果条件为真,我需要toggle而不是remove

但是我无法让它发挥作用。试试这样:

 $el
   .doThis
   .end()
   .find( "a" ).first().toggleClass( someClass , ( o.direction == "horizontal" ? !isCollapse : event ) );

如果o.direction == "horizontal"正确切换班级,但如果不是,我就不能remove代替toggle

问题:
有没有办法检查条件并在满足条件时执行toggle如果不在链式jquery语句中则执行removeClass

3 个答案:

答案 0 :(得分:1)

要解决我不确定运行时元素状态是什么的问题,并且很难有一个具有该状态的变量,我通常使用数据属性,然后让代码管理它们。

<div data-direction="horizontal">

然后

if(element.getAttribute("data-direction") == "horizontal")
{
 //TODO: remove or toggle
}

使用

管理州
element.setAttribute("data-direction","state");

答案 1 :(得分:1)

$el
   .doThis
   .end()
   .find( "a" ).first()[o.direction == 'horizontal' ? 'toggleClass':'removeClass']( someClass )

答案 2 :(得分:1)

不应在event条件中使用else对象。您应该使用false代替:

.toggleClass( someClass , ( o.direction == "horizontal" ? !isCollapse : false ) )

这意味着如果o.direction == "horizontal",将根据isCollapse值切换css类。否则,将删除css类。