【问题标题】:Conditional operator for calling a method调用方法的条件运算符
【发布时间】:2016-09-07 17:02:00
【问题描述】:

如果条件失败,我需要调用一个函数,如果它为真,则什么都不做。

$('body').click(function (e) {
    ($(this).hasClass("name")) ? return : checkforemail();
});

我不能在这里使用返回。如何做到这一点?

【问题讨论】:

  • 你为什么不使用 if lol?
  • 为什么要使用三元运算符?该语句不是您可以为其分配值的东西,return 不是有效值。除了return 使用类似:null,0,1 等。只要它是有效的,你使用什么并不完全重要。
  • 三元运算符计算为表达式,表达式中不能有return语句,错误也是如此

标签: javascript jquery click conditional-operator


【解决方案1】:

$(this).hasClass("name") 将返回一个布尔值并且您也不需要显式返回 true。如果你的条件不满足可以使用:(or)调用函数

//$('body').addClass("name")
    $('body').click(function (e) {
        ($(this).hasClass("name")) ==true ? 1 : checkforemail();
    });


function checkforemail(){
alert("Hello");
}

查看jsFiddle

注意:在jsfiddle中un注释$('body').addClass("name").点击body会调用函数

【讨论】:

    【解决方案2】:

    使用如果

    $('body').click(function (e) {
        if (!$(this).hasClass("name")) {checkforemail();}
    });
    

    【讨论】:

      【解决方案3】:

      您可以使用.is()AND 运算符&&

      !$(this).is(".name") && checkforemail();
      

      【讨论】:

        【解决方案4】:

        你不能在ternary 中使用return 语句!但是如果你想return 语句试试下面的..

        $('body').click(function (e) {
            var status = ($(this).hasClass("name")) ? true : false;
            return status;
        });
        

        如果你只想调用你的方法,也可以不

        $('body').click(function (e) {
            if(!$(this).hasClass("name")){
                    checkforemail();
            }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-28
          • 2017-06-24
          • 1970-01-01
          • 2016-04-03
          • 1970-01-01
          • 2011-10-21
          • 2011-01-09
          • 1970-01-01
          相关资源
          最近更新 更多