window.resize总是在IE中触发而不调整大小

时间:2012-02-12 03:06:09

标签: php javascript jquery internet-explorer

旧标题: 包含的PHP无法在预期的函数中使用JQuery和IE

我有这两个功能:

首先:

/* dynamic menue */
$("#wrapper div").not(":first").hide();
$("#nav p").click(function () {  
$('#wrapper div').eq($(this).index()).show().siblings().hide();
});

第二

 var menue = function (menue) {
 if ($(window).width() < 680) {
    $("#nav").hide();
    $("#wrapper div").show();
 } else  {
    $("#nav").show();
    $("#wrapper div").not(":first").hide();
 }
};
$(document).ready(menue);
$(window).resize(menue);

第一个功能运行良好,第二个功能确保所有内容在没有菜单的情况下显示,如果窗口大小超过680px,否则它将显示正常状态。在所有浏览器中一切正常。

我为可视化做了一个小提琴:http://jsfiddle.net/TFeWY/

然而,这在IE中无法正常使用此设置:div内容是使用php生成的。在这种状态下,我只看到IE中的第一个div,不能切换到另一个,但调整大小效果很好。但是,如果我用html更改php内容,它将再次正常工作。更有趣的是:如果我保持php不变,只需删除else语句,它也可以。

到目前为止,我无法弄清楚天气是php内容(我不认为)或php内容上下文中的hide()命令。

IE的功能有问题吗? (在IE8中测试)

修改:

如果我删除$(窗口).resize(menue);它也有效。那么函数本身一定有问题吗?

我发现windows.resize函数总是在IE 8中被触发,这就是为什么我看不到其他div的原因。

我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

也许重新组织您的代码,使用类似的东西:

$(document).ready(function(){   
    $("#wrapper div:gt(0)").hide();
    $("#nav p").live('click',function () {  
    $('#wrapper div').eq($(this).index()).show().siblings().hide();
    }); 
    menue();
    $(window).live('resize',function(){menue()});
});

function menue() {
 if ($(window).width() < 680) {
    $("#nav").hide();
    $("#wrapper div").show();
 } else  {
    $("#nav").show();
    $("#wrapper div:gt(0)").hide();
 }
}

答案 1 :(得分:1)

好的,我终于找到了答案:

实际上这是我的问题的一个帖子,它描述了这里发生的事情:window.resize event firing in Internet Explorer

在IE 8中查看这个更新的小提琴。它不起作用,因为我描述导致调整大小被触发:

http://jsfiddle.net/TFeWY/1/

现在你可以使用上面提到的帖子的给定答案。

或者这是我现在使用的朋友的修复:

http://jsfiddle.net/TFeWY/2/

我认为这是一个非常有趣的解决方案。