Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript InternetExplorer多次触发jQuery函数,并且在错误的时间触发_Javascript_Jquery_Html_Internet Explorer - Fatal编程技术网

Javascript InternetExplorer多次触发jQuery函数,并且在错误的时间触发

Javascript InternetExplorer多次触发jQuery函数,并且在错误的时间触发,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,我得到了一些代码,它将一个div放在网页中间。这段代码在chrome上运行得很好,但出于某种原因,在IE上(我认为是9或10)它第一次运行,然后就不运行了 为了说明这个问题,这里有一些照片:(忽略你不理解的符号,这是我的语言) 铬: IE第一次单击对象打开时: IE第二次或更多次,当我点击一个对象打开时: 这是我用来将div居中的代码: jQuery.fn.center = function () { this.css("position","fixed"); th

我得到了一些代码,它将一个div放在网页中间。这段代码在chrome上运行得很好,但出于某种原因,在IE上(我认为是9或10)它第一次运行,然后就不运行了

为了说明这个问题,这里有一些照片:(忽略你不理解的符号,这是我的语言)

铬:

IE第一次单击对象打开时:

IE第二次或更多次,当我点击一个对象打开时:

这是我用来将div居中的代码:

    jQuery.fn.center = function ()
{
    this.css("position","fixed");
    this.css("top", ($(window).height() / 2) - (this.outerHeight() / 2));
    this.css("left", ($(window).width() / 2) - (this.outerWidth() / 2));
    return this;
}
使用
center()
函数的代码:

$('#products,#search-result').on("click",'.product-item-info',function() {
    var pid = $(this).find('input').val();
    $.get('product_info.php',{pid:pid},function(data){
        $('#product-lb').html(data).append('<span class="x"><span>X</span></span>');
        $('.x').click(function() {
            $('#dimmer').click();
        });

        $('#dimmer').css({width:$('html').width(),height:$('html').height()});
        $('#product-lb').center();
        $('#product-lb').show(800);
        $('#dimmer').show();
        $(window).resize(function() {
            $('#product-lb').center();
        });
    });
});
    $('#dimmer').click(function() {

    $('#dimmer').fadeOut(800);
    $('#product-lb').hide(800);
});

$('.x').click(function() {
            $('#dimmer').click();
        });
我第一次看到chrome、explorer和第二次看到explorer之间的区别:

Chrome-第一次打开div控制台日志:

镀铬-关闭div控制台后:

Internet Explorer-第一次打开div:

现在是奇怪部分的第一步,当div关闭时,函数被触发,因此控制台看起来如下:

现在,这是我发现的最令人不安的事情,在第二次尝试打开div查看时,请看控制台:

在结束这个部门之后:

似乎每当我打开div、关闭div时,事件都会触发,并且它会触发多达4-5次

这是我的关闭功能:

$('#products,#search-result').on("click",'.product-item-info',function() {
    var pid = $(this).find('input').val();
    $.get('product_info.php',{pid:pid},function(data){
        $('#product-lb').html(data).append('<span class="x"><span>X</span></span>');
        $('.x').click(function() {
            $('#dimmer').click();
        });

        $('#dimmer').css({width:$('html').width(),height:$('html').height()});
        $('#product-lb').center();
        $('#product-lb').show(800);
        $('#dimmer').show();
        $(window).resize(function() {
            $('#product-lb').center();
        });
    });
});
    $('#dimmer').click(function() {

    $('#dimmer').fadeOut(800);
    $('#product-lb').hide(800);
});

$('.x').click(function() {
            $('#dimmer').click();
        });
我不知道为什么会这样!在chrome中,一切都很好,但在InternetExplorer中,一切都很混乱


提前谢谢

所以每次你点击“#产品,#搜索结果”,你都在设置一个新的窗口来调整处理程序的大小?!您不应该嵌套处理程序。顺便说一句,调整窗口大小事件应该使用timeout@A.沃尔夫,你能再解释一点吗?哪一部分你不懂?@a.Wolff超时的那一部分。顺便说一句,我想我已经找到了为什么它能多次安慰高地的原因。每次显示信息div时,浏览器似乎都会显示水平滚动条。您知道如何防止这种情况吗?限制调整大小事件超时的示例:这将修复调整大小时调用多个调整大小事件的事实。也就是说,您的主要问题是嵌套的调整大小处理程序。。。即使您限制了resize事件,如果您绑定了数千个此事件,也会带来麻烦