了解 jQuery 语法? :

understanding jQuery syntax ? :

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

有人能给我指出正确的方向吗,这段代码来自 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();
    }
  }
});

那个? : 不是 jquery,只是香草 javascript。它称为条件(三元)运算符,可用作标准 if/else 语句的 shorthand: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 语句的快捷方式。
这里有一个示例来演示:

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!"); 
}
*/

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)

Conditional (ternary) Operator

问号前的第一部分是您要计算的表达式。问号之后和冒号之前的第二部分是 true-clause。冒号后的第三部分是假从句。