【问题标题】:Need explanation on ternary operator of select2 codeselect2代码的三元运算符需要说明
【发布时间】:2017-12-24 23:48:05
【问题描述】:

在 jquery 的 select2 组件中,我在 'keypress' 事件监听器中遇到了以下代码。

 a.isOpen() ? c === d.ESC || c === d.TAB || c === d.UP && b.altKey ? (a.close(),
                b.preventDefault()) : c === d.ENTER ? (a.trigger("results:select", {}),
                b.preventDefault()) : c === d.SPACE && b.ctrlKey ? (a.trigger("results:toggle", {}),
                b.preventDefault()) : c === d.UP ? (a.trigger("results:previous", {}),
                b.preventDefault()) : c === d.DOWN && (a.trigger("results:next", {}),
                b.preventDefault()) : (c === d.ENTER || c === d.SPACE || c === d.DOWN && b.altKey) && (a.open(),
                b.preventDefault())

谁能解释一下这个复杂的结构?

【问题讨论】:

    标签: javascript jquery html jquery-select2


    【解决方案1】:

    三元组转换为 if 和 else 语句,您可以将它们嵌套在一起。

    它大致翻译成这个。您可以继续深入兔子洞,将其分解为更多嵌套的 if 和 else 语句

    if(a.isOpen()){
    
        if(c === d.ESC || c === d.TAB || c === d.UP && b.altKey){
            a.close();
            b.preventDefault();
        }
        else{
            if(d.ENTER){
                a.trigger("results:select", {};
                b.preventDefault();
            }
            else{
    
                if(d.SPACE && b.ctrlKey){
                    a.trigger("results:toggle", {});
                    b.preventDefault();
                }
                else{
    
                    if(c === d.UP){
                        a.trigger("results:previous", {});
                        b.preventDefault()
                    }
                    else{
                        ...and so on and so on
                    }
                }
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-07
      • 2011-04-04
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 2018-11-08
      • 2011-04-11
      相关资源
      最近更新 更多