每个将adiv附加到div的窗口调整大小事件,都会以某种方式创建一个额外的不需要的ajax调用

时间:2019-05-15 07:39:41

标签: javascript php jquery

我设置了窗口调整大小,以使用ajax调用创建一个div,并删除了先前创建的div(如果找到了该div)(我对其进行了测试,并且在多个对象上均未创建多余的div调整事件大小- DOM中始终只有一个div )。

但是当该div中的ajax触发时,它触发了我调整窗口大小的次数。我不确定可能是什么问题。似乎浏览器似乎缓存了创建的div,即使它仅将当前div保留在DOM中,它也会导致缓存的div触发resize事件。我禁用了CMS中的缓存。

我尝试在create_div函数以及fire_ajax函数中添加一个反跳功能-无效。

var set_up_div = debounce(function() {

            if (window.innerWidth <= 767 && $('#mydiv').length == 0) {
                $('#mydiv').remove();
                $('#mydiv').prepend(mydiv);
            } 
            if(window.innerWidth > 767 && $('#mydiv').length == 0) {
                $('#mydiv').remove();
                $('#mydiv').prepend(mydiv);
            }

},500);     

var fire_ajax = debounce(function() {

              $.ajax({
                url: 'index.php?route=extension/module/mycontroller/func1',
                type: 'get',
                beforeSend: function() {
                },
                complete: function(data){
                },
                success: function(data) {
                    $('#mydiv').html(data);
                        $.ajax({
                            url: 'index.php?route=extension/module/mycontroller/func2&data={{somedata}}',
                            type: 'get',
                            beforeSend: function() {
                            },
                            complete: function(data){
                            },
                            success: function(data) {

                                $('#somediv').html(data);
                            }
                        });                 
                }
            });

}, 500);

function f(){
    set_up_div();
    fire_ajax();
}    

window.addEventListener('resize', f);

即使窗口早早被调整了n次,我也必须能够触发一次ajax,但是我调整窗口的大小越多,当调用fire_ajax函数时,就会触发更多的ajax调用,如控制台所示。

0 个答案:

没有答案