为什么我无法在if表达式中调用Jquery函数

时间:2010-12-22 17:43:39

标签: jquery jquery-selectors

$("#btn1").click(function(){

//CheckMyWeight is called Perfectly here and not in the if loop expression

if ($("#frm1").validationEngine({returnIsValid:true}) && CheckMyWeight() && a === b) {  

}});

为什么我无法在if循环表达式中调用“CheckMyWeight()”并且我能够完美地调用 在“#btn1”功能之后。

2 个答案:

答案 0 :(得分:4)

如果&&的左侧返回假,则不会评估右侧。 (因为整个表达不可能是真的)
这称为短路。

如果您想要始终调用这两个函数,则应在条件之外调用它们并将结果分配给变量并留下注释解释原因

var isValid = $("#frm1").validationEngine({returnIsValid:true});
var isHeavy = CheckMyWeight();   //Always call both functions
if (isValid && isHeavy && a === b) {  
    ...
}

还有其他解决方法,但它们隐藏了代码的意图。

答案 1 :(得分:0)

以下是一个小程序,用于测试你是否可以调用if循环表达式中的“CheckMyWeight()”。它工作正常,问题在于$(“#frm1”)。validationifyng({returnIsValid:true}试试通过打破条件来工作。

 <html>
    <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        alert('body');
        function CheckMyWeight() {
          return true;
        }
        $("#btn1").click(function(){
            var a =1,b=1;
            //CheckMyWeight is called Perfectly here and not in the if loop expression
    //        CheckMyWeight() &&
            if ( CheckMyWeight() && a === b) {
                alert('hi');
        }
        });
    });
    </script>
    </head>
    <body>
    <button id="btn1">Click me</button>
    </body>
    </html>