当AJAX查询处于活动状态时禁用窗口大小调整

时间:2012-07-19 09:24:17

标签: javascript jquery html ajax

我有一个jQuery脚本,它是一个搜索脚本,但也包含在调整窗口大小时将元素调整为(屏幕高度 - 40px)的功能。但是,我想在搜索(AJAX查询)处于活动状态时禁用调整大小功能。有谁知道我怎么做?

我目前的代码是:

$(document).ready(function(){
    $(window).resize(function(){
        if($(window).height()<1200){
            $("#a").height($(window).height()-40);
        }
    });
    $("form").submit(function(a){
        a.preventDefault();
        if($("#i").val().length>0){
            $.ajax({
                type:"get",
                url:"search.php?q="+q,
                dataType:"html",
                success:function(a){
                    ...
                }
            })
        }
    })
})

3 个答案:

答案 0 :(得分:1)

使用.on()和.off()

$(document).ready(function(){
    function started(){
        if($(window).height()<1200){
            $("#a").height($(window).height()-40);
        }
    $(window).on("resize.name_space",started);

    $("form").submit(function(a){
        a.preventDefault();
        if($("#i").val().length>0){
           $(window).off("resize.name_space");
            $.ajax({
                type:"get",
                url:"search.php?q="+q,
                dataType:"html",
                success:function(a){
                $(window).on("resize.name_space",started);    ...
                }
            })
        }
    })
})

答案 1 :(得分:0)

试试这个,它会在ajax运行时添加一个检查并停止重新调整大小

$(document).ready(function(){

//Create the variable
var check = false;

$(window).resize(function(){

    //Is the ajax currently running? This if statement runs if the answer is no
    if (check == false && $(window).height()<1200 ) {
        $("#a").height($(window).height()-40);
    }

});
$("form").submit(function(a){
    a.preventDefault();

    //Set the variable to true, this stops the resizing above ^^
    check = true;
    if($("#i").val().length>0){
        $.ajax({
            type:"get",
            url:"search.php?q="+q,
            dataType:"html",
            success:function(a){
                ...
            },
            complete: function() {
                //Set back to off once the ajax has finished
                check = false;
            }
        })
    }
})

})

答案 2 :(得分:0)

var loading;
...
    if($(window).height()<1200 && !loading){
...
        loading = true;
        $.ajax({
            ...
            complete: function(){
                loading = false;
            }.
        })
    }
})