基于字符串将jQuery函数应用于对象

时间:2016-02-21 10:57:32

标签: javascript jquery

我使用了以下jQuery结构,所以我想把它写得更短(编辑:addClass和removeClass是EXAMPLE函数,我想知道将不同函数应用于对象的一般三元方法,所以不要告诉我关于toggleClass,它甚至不像下面的代码那样工作):

if(something){
  obj.addClass('class');
}else{
  obj.removeClass('class');
}

我想在一行中编写它,所以我想知道如何有条件地应用jQuery函数。使用三元运算符的情况如下,只有这个还没有工作:

$[something?'addClass':'removeClass'].apply(obj,'class');

这很容易在常规的javascript中完成,但我如何正确地构造上面的jQuery?

编辑:我没有搜索两个单独的电话,例如:

something ? obj.addClass('class') : obj.removeClass('class');

2 个答案:

答案 0 :(得分:1)

只要把它放在相同的东西上,如果它是真的,那么它将会变得无足轻重。

    $( this ).toggleClass( "class" ); = something;

答案 1 :(得分:0)

编写辅助函数怎么样?

function ternary(object, condition, a, b) {
  var method = condition ? $.fn[a] : $.fn[b];
  var args = arguments.slice(4);
  return method.apply(object, parameters, args);
}

然后你可以做

ternary(obj, something, 'addClass', 'removeClass', 'my-class-name');
ternary(obj2, somethingElse, 'slideUp', 'slideDown');