如果之前未加载,则单击加载页面

时间:2013-11-26 06:07:06

标签: jquery pageload

如果页面已经加载,请告诉我如何停止加载页面?

$(".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 ---我不应该这样) 请提供解决方案

3 个答案:

答案 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;
}