jquery case语句不起作用

时间:2013-12-20 22:36:35

标签: jquery switch-statement conditional case

$(document).ready(function () {
    $("#img-1").click(function () {

        switch (true) {
            case $("#div2").load("borrower-information.html"):
                alert(hello);

                break;
            case ($("#div3").load("demo_test.html #p3")):
                break;

            case ($("#div4").load("demo_test.html #p4")):
                alert('hello');
        }
    });
}); 
我已经制作了3个div,并且有一个按钮的id名称是id = img-1,点击其他来源的页面加载它确定但我的查询是警报不起作用为什么?

1 个答案:

答案 0 :(得分:3)

switch (true)表示“选择使用严格相等(case)”评估为true的第一个===。您的所有案例都没有使用严格相等来评估true。它们都会产生jqXHR个对象,虽然这些对象不是=== true。所以他们都不匹配。

这适用于:例如:

var a = 42;
switch (true) {
    case a == 67:
        console.log("a == 67 is true");
        break;
    case a == 42:
        console.log("a == 42 is true");
        break;
}

...因为它使a == 42 is true出现在控制台中,因为表达式a == 42true,因此它与switch (true)匹配。但这是对switch的一种非常非常不寻常的用法。无论你想做什么,都可能有更好的方法。