【问题标题】:understanding jQuery syntax ? : [duplicate]了解 jQuery 语法? : [复制]
【发布时间】:2015-09-18 00:46:05
【问题描述】:

我想了解什么?和 : 在这段代码中做的,我在代码中看到了很多,但我永远无法理解它到底在做什么?

谁能指出我正确的方向,这段代码来自 jQuery validate() DOCS

$(".selector").validate({
  invalidHandler: function(event, validator) {
    // 'this' refers to the form
    var errors = validator.numberOfInvalids();
    if (errors) {
      var message = errors == 1
        ? 'You missed 1 field. It has been highlighted'
        : 'You missed ' + errors + ' fields. They have been highlighted';
      $("div.error span").html(message);
      $("div.error").show();
    } else {
      $("div.error").hide();
    }
  }
});

【问题讨论】:

    标签: javascript jquery scripting


    【解决方案1】:

    ? : 不是 jquery,只是香草 javascript。它被称为条件(三元)运算符,可以用作标准 if/else 语句的简写:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Conditional_%28ternary%29_operator

    基本上是这样说的

    val = (boolean expression)? (val if boolean is true) : (val if boolean is false)
    

    所以在你的情况下,如果errors == 1 为真,则message 等于'You missed 1 field. It has been highlighted',否则message 等于'You missed ' + errors + ' fields. They have been highlighted'

    【讨论】:

    • 好的,所以它基本上是另一种检查方式?类似于 if/else 语句,我的下一个问题是,为什么要在 if/else 语句中使用它?
    • 是的,就是这样。您可以将其用作基于 if else 条件为变量分配值的更简写方式。
    【解决方案2】:

    Conditional (ternary) Operator

    问号前的第一部分是您要评估的表达式。问号之后和冒号之前的第二部分是真子句。冒号后的第三部分是假分句。

    【讨论】:

      【解决方案3】:

      var errors = 1; 
      // define `message` 
      // if `errors == 1`
      var message = errors == 1 
              // `errors == 1`
              ? 'You missed 1 field. It has been highlighted' 
               // `errors != 1`
              : 'You missed ' + errors + ' fields. They have been highlighted';
      console.log(message)

      【讨论】:

        【解决方案4】:

        这是条件(三元)运算符,是标准 if/else 语句的快捷方式。
        下面是一个示例:

        var grade = 85;
        console.log("You " + (grade > 50 ? "passed!" : "failed!"));
        
        //Output: You passed!
        
        /* The above statement is same as saying:
        if(grade > 50){
            console.log("You " + "passed!");  //or simply "You passed!"
        }
        else{
            console.log("You " + "failed!"); 
        }
        */
        

        【讨论】:

          猜你喜欢
          • 2011-04-12
          • 2011-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多