旧标题: 包含的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的原因。
我该怎么办呢?
答案 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中查看这个更新的小提琴。它不起作用,因为我描述导致调整大小被触发:
现在你可以使用上面提到的帖子的给定答案。
或者这是我现在使用的朋友的修复:
我认为这是一个非常有趣的解决方案。