Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery:较短的代码(if&var)_Jquery_Variables_If Statement_Shortcut_Shorthand If - Fatal编程技术网

jquery:较短的代码(if&var)

jquery:较短的代码(if&var),jquery,variables,if-statement,shortcut,shorthand-if,Jquery,Variables,If Statement,Shortcut,Shorthand If,这可能是一个愚蠢的问题,但我有一个问题,不是代码没有发挥作用-而是代码太长 一切正常,但例如,有没有办法缩短if/else? 或者是否可以跟踪4个不同的var,但代码较短 var transitionState_N = '-'; var transitionState_X = '-'; var transitionState_Y = '-'; var transitionState_Z= '-'; // carousel 4way function carousel_4way_N (n, el

这可能是一个愚蠢的问题,但我有一个问题,不是代码没有发挥作用-而是代码太长

一切正常,但例如,有没有办法缩短if/else? 或者是否可以跟踪4个不同的var,但代码较短

var transitionState_N = '-';
var transitionState_X = '-';
var transitionState_Y = '-';
var transitionState_Z= '-';

// carousel 4way
function carousel_4way_N (n, el, m) {
    var carousel = '#carousel-4way-nav-' + n
    var carousel_content = '#carousel-4way-' + n
        if (transitionState_N == '-')
          {
          transitionState_N = '+';
          }
          else
          {
          transitionState_N = '-';
          }
        $(carousel_reset).hide();
        $(carousel).transition(
        {y: m + '=10',delay:200}
        );
        };

function carousel_4way_X (n, el, m) {
    var carousel = '#carousel-4way-nav-' + n
    var carousel_content = '#carousel-4way-' + n
        if (transitionState_X == '-')
          {
          transitionState_X = '+';
          }
          else
          {
          transitionState_X = '-';
          }
        $(carousel_reset).hide();
        $(carousel).transition(
        {y: m + '=10',delay:200}
        );
        };

function carousel_4way_Y (n, el, m) {
    var carousel = '#carousel-4way-nav-' + n
    var carousel_content = '#carousel-4way-' + n
        if (transitionState_Y == '-')
          {
          transitionState_Y = '+';
          }
          else
          {
          transitionState_Y = '-';
          }
        $(carousel_reset).hide();
        $(carousel).transition(
        {y: m + '=10',delay:200}
        );
        };

function carousel_4way_Z (n, el, m) {
    var carousel = '#carousel-4way-nav-' + n
    var carousel_content = '#carousel-4way-' + n
        if (transitionState_Z == '-')
          {
          transitionState_Z = '+';
          }
          else
          {
          transitionState_Z = '-';
          }
        $(carousel_reset).hide();
        $(carousel).transition(
        {y: m + '=10',delay:200}
        );
        };

$('#carousel-4way-nav-1').click(function(event){
    $(carousel_reset_nav).not(this).transition(
    {y:0});
    return carousel_4way_N(1, this, (transitionState == '-') ? '+' : '-');
    event.preventDefault();
});

$('#carousel-4way-nav-2').click(function(event){
    $(carousel_reset_nav).not(this).transition(
    {y:0});
    return carousel_4way_X(2, this, (transitionState == '-') ? '+' : '-');
    event.preventDefault();
});

$('#carousel-4way-nav-3').click(function(event){
    $(carousel_reset_nav).not(this).transition(
    {y:0});
    return carousel_4way_Y(3, this, (transitionState == '-') ? '+' : '-');
    event.preventDefault();
});

$('#carousel-4way-nav-4').click(function(event){
    $(carousel_reset_nav).not(this).transition(
    {y:0});
    return carousel_4way_Z(4, this, (transitionState == '-') ? '+' : '-');
    event.preventDefault();
});

三元运算符使其更具可读性:

transitionState_N  = (transitionState_N == '-') ? '+' : '-';
你的功能真的很重复。查找您经常重复的代码,并编写一个函数来替换它。

下面是我要做的: 首先,可以将click()函数指定给所有元素。然后,您可以获得每个元素的id并提取最后一个数字字符

$('#carousel-4way-nav-1, #carousel-4way-nav-2,#carousel-4way-nav-3, #carousel-4way-nav-4').click(function(event){
    $(carousel_reset_nav).not(this).transition(
    {y:0});
    return carousel_4way(($(this).attr('id')).substring(this.length -1), this, (transitionState == '-') ? '+' : '-');
    event.preventDefault();
});
现在,所有这些都将调用相同的函数:

function carousel_4way(n, el, m) {
    var carousel = '#carousel-4way-nav-' + n
    var carousel_content = '#carousel-4way-' + n
        switch(n){
            case 1:
               transitionState_N  = (transitionState_N == '-') ? '+' : '-';
            case 2:
               transitionState_X = ...
            ...
        }
     $(carousel_reset).hide();
     $(carousel).transition(
        {y: m + '=10',delay:200}
     );
};

您可能需要研究语法,但您得到了一个大概的想法

您应该发布这个问题。通常,如果我有这样的代码,我会查找基本相同的部分,并将它们放入函数中,以便代码只存在一次。
事件.preventDefault()
是死代码(在
返回
之后)。此外,还有很多未使用的变量,我在单击时使用了它,但不知道它到底是什么,因为这是通过另一个stackoverflow用户帮助完成的。我在哪里可以找到这方面的文档?那很好。我一定会实施这个。但是你能解释一下如何用一个变量获得多个变量吗?因为在这段代码中有transitionState_N-我还需要有_X_Y_Z,这些需要单独跟踪。抱歉,刚才注意到它不是自解释的(编辑了上面的代码),您仍然拥有所有四个变量,您将使用switch语句对它们进行迭代