我在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
?
答案 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类。