如果页面已经加载,请告诉我如何停止加载页面?
$(".Tab_heading:first-child").live('click',function(){
$.ajax({
type: 'get',
url: "relatedInfo.action",
data: $(".relatedinfo_wrapper"),
success: relatedInfodesktop
});
$(".Tab_heading").removeClass("tabselected");
$(this).addClass("tabselected");
$(".RelService_wrapper").show();
$(".DepService_wrapper").hide();
});
Tab_heading充当选项卡(有两个标签链接class =“Tab_heading”) 如果用户点击页面加载的标题 但再次如果用户点击标题并且页面已经加载,则不应再次加载(GET http:xxxxxxx / relatedInfo.action ---我不应该这样) 请提供解决方案
答案 0 :(得分:1)
也许你只是在运行AJAX之前添加一些检查。例如,正如我从您的代码中看到的那样,您删除并添加了一些类。因此,如果你的ajax响应已经加载,你将在页面中有不同的样式。所以试试这样的事情
$(".Tab_heading:first-child").live('click',function(){
if ($(this).hasClass("tabselected")){ do nothing}
else{$.ajax({you get the rest})}
}
答案 1 :(得分:0)
加载后禁用事件;在用户点击之前等待禁用该事件可能不是最佳解决方案。 JQuery提供了.load()函数;只需选择包含加载ajax的内容的元素,然后调用
$('#my_loading_element').load(function() {$(".Tab_heading:first-child").off('click')});
就可以了。这将在元素加载后删除click事件。或者,如果元素总是通过ajax加载,你可以把它放在:
$(".Tab_heading:first-child").off('click');
在你的成功功能中脱离事件。
在我看来,即使在用户点击某些内容之前数据开始加载,您根本不应该进行ajax调用,只需将内容从服务器端放入其中;但是,如果您必须进行ajax调用并且必须在单击时触发,则还可以使用第三个选项,在第一次单击时您将脱离事件,以便所有后续单击不执行任何操作(例如,用户点击并触发一次ajax,然后在它完成之前再次点击,然后一次又一次地点击......有缺陷的代码会多次放入内容)。您的代码看起来会更像这样:
$(".Tab_heading:first-child").live('click',function(){
$(this).off('click');
$.ajax({
...
});
});
这可能是您案例中最好的选择;点击一下,再打一次ajax调用触发器。
修改
$(".Tab_heading:first-child").live('click',function(){
$(this).off('click');
$.ajax({
...
success: function() {
$(".Tab_heading:first-child").on('click', function() {
//open the tab here
}).click();
} //no trailing comma for IE compatibility
});
});
最后一次调用.click()是为了方便,因此用户无需再单击选项卡两次即可打开它。
最后一件事:如果你使用的jquery不是1.7或更高,你应该更新的原因有很多。较新的版本更易于使用,更直观,更高效,更不笨拙,并且可能具有对严肃的Web开发人员至关重要的安全功能。即使转换网站需要很长时间,也值得付出努力。
答案 2 :(得分:-1)
尝试使用此代码,您可以在加载页面之前检查变量。
var loaded = false;
$(".Tab_heading:first-child").live('click',function(){
if(!loaded){
$.ajax({
type: 'get',
url: "relatedInfo.action",
data: $(".relatedinfo_wrapper"),
success: relatedInfodesktop
});
$(".Tab_heading").removeClass("tabselected");
$(this).addClass("tabselected");
$(".RelService_wrapper").show();
$(".DepService_wrapper").hide();
});
}
}
function relatedInfodesktop(response){
//your code here
loaded = true;
}