根本问题是 ColorBox在加载内容之前打开,因此 colorbox 本身不知道请求状态。
我担心您所能做的就是在调用彩盒之前发出 Ajax HEAD 请求,这应该很快,然后缓存请求状态。
$('a').click(function(e) {
e.preventDefault();
var self = $(this);
var href = self.attr('href');
if(self.data('success') == 'success') {
$.colorbox({href:href});
} else if (self.data('success') == 'error') {
return;
} else {
$.ajax({
type: "HEAD",
async: true,
url: href,
success: function(message,text,response){
$.colorbox({href:href});
self.data('success', 'success');
},
error: function() {
self.data('success', 'error');
}
});
}
});
在这里测试小提琴:http: //jsfiddle.net/JS9Sc/