此函数在执行时返回未定义的值。如果页面加载,我希望它返回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;
});
});
答案 0 :(得分: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");
}
});
});
});