1

我有一个 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){
                    ...
                }
            })
        }
    })
})
4

3 回答 3

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);    ...
                }
            })
        }
    })
})
于 2012-07-19T09:28:12.953 回答
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;
            }
        })
    }
})

})

于 2012-07-19T09:27:28.153 回答
0
var loading;
...
    if($(window).height()<1200 && !loading){
...
        loading = true;
        $.ajax({
            ...
            complete: function(){
                loading = false;
            }.
        })
    }
})
于 2012-07-19T09:27:59.113 回答