0

该函数在执行时返回一个未定义的值。如果页面已加载,我希望它返回 true,否则返回 false:

function JLoad (url) {
        var uri = url + ' #div';
        $("#div").load(uri, {'bd': '1'}, function(response, status, xhr){
            if (status != "error"){
                if (window.history && window.history.pushState)
                {
                    window.history.pushState({}, 'Test', url);
                }
                else
                {
                    window.location.hash='!/'+url;
                }
                return true;
            }else{
                return false;
            }
        });
    };

这是用于请求函数的代码的一部分:

$(document).ready(function() {
$("a").on("click", function() {
        var url = $(this).attr("href").replace('./', '');
    console.log(JLoad(url));
        return false;
    });
});
4

1 回答 1

3

因为 jQuery.load() 是异步的,所以重写你的函数来接受回调。

function JLoad (url, cb) {
    var uri = url + ' #div'
    $("#div").load(uri, {'bd': '1'}, function(response, status, xhr){
        if (status != "error"){
            if (window.history && window.history.pushState)
            {
                window.history.pushState({}, 'Test', url);
            }
            else
            {
                window.location.hash='!/'+url;
            }
            cb(true);
        } else{
            cb(false);
        }
    });
}

然后:

$(document).ready(function() {
    $("a").on("click", function() {
        var $link = $(this),
            url = $link.attr("href").replace('./', '');

        JLoad(url, function(successful) {
            if (successful) {
                $("a").removeClass("active");
                $link.addClass("active");
            }
        });
    });
});
于 2013-06-06T19:33:28.890 回答