Javascript InternetExplorer多次触发jQuery函数,并且在错误的时间触发
我得到了一些代码,它将一个div放在网页中间。这段代码在chrome上运行得很好,但出于某种原因,在IE上(我认为是9或10)它第一次运行,然后就不运行了 为了说明这个问题,这里有一些照片:(忽略你不理解的符号,这是我的语言) 铬: IE第一次单击对象打开时: IE第二次或更多次,当我点击一个对象打开时: 这是我用来将div居中的代码: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
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事件,如果您绑定了数千个此事件,也会带来麻烦