javascript三元运算符增加或减去值

时间:2015-10-08 16:38:38

标签: javascript ternary-operator

以下代码的唯一区别是用于增加或减去该值的 - + 符号。

if( that.hasClass('prev') ){
    $('.elem').scrollLeft( $('.elem').scrollLeft()-(0.1*factor) );
}
else if( that.hasClass('next') ){
    $('.elem').scrollLeft( $('.elem').scrollLeft()+(0.1*factor) );
}

我想知道如何在一个小的三元语句中转换代码,是否可能?

3 个答案:

答案 0 :(得分:2)

如果你真的需要测试这两个类(“next”和“prev”),你可以将逻辑分解出来:

var mul = that.hasClass("prev") ? -1 :
          that.hasClass("next") ? 1 :
          0;

$(".elem").scrollLeft($(".elem").scrollLeft() + mul * 0.1 * factor);

如果您感觉特别有活力,可以将其转换为jQuery函数:

$.fn.scrollDir = function() {
  return  that.hasClass("prev") ? -1 :
          that.hasClass("next") ? 1 :
          0;
};

$(".elem").scrollLeft($(".elem").scrollLeft() + that.scrollDir() * 0.1 * factor);

答案 1 :(得分:1)

如果您真的想这样做,以下情况应该有效:

$('.elem').scrollLeft($('.elem').scrollLeft()+(0.1*factor*(that.hasClass('prev') ? -1 : that.hasClass('next') ? 1 : 0)))

但为了清楚起见,我可能会像你写的那样离开它。

答案 2 :(得分:0)

我会这样做

(that.hasClass('prev')) ? $('.elem').scrollLeft( $('.elem').scrollLeft()-(0.1*factor) ) : $('.elem').scrollLeft( $('.elem').scrollLeft()+(0.1*factor) );