jQuery和IE,根本没有表现

时间:2010-01-27 03:17:01

标签: jquery ajax json internet-explorer

解决方案

var options = { opacity: opacity }; //Many thanks to David Higgins for his help
var direction;
if(id == "chat") { 
    direction = {right: dir + amt, top: dir + amt };
} else if(id == "rplayed") { 
    direction = {left: dir + amt, top: dir + amt };
} else if(id == "info") { 
    direction = {right: dir + amt, bottom: dir + amt };
} else if(id == "player") { 
    direction = {left: dir + amt, bottom: dir + amt };
}
$.extend(options, direction);
$(wid).animate(options, 200);

问题

我一直在开发一个在Chrome和Firefox中非常jQuery密集的网站。它现在进入了一个在IE中打开它的阶段,看看IE如何处理网站。

我已经浏览了jQuery的东西,我真的看不出我写的任何内容有什么问题,IE只是给出错误“无效的争论 - 第142行 - jquery.js”(实际的jQuery源文件) 。

在网站上,jQuery有两个主要用途:使用Ajax和JSON更新元素并移动元素(隐藏/显示和滑动)以创建窗口界面。

网站位于 deadlink ,而JS位于 deadlink

任何人都可以解释我的jQuery代码有什么问题吗?我不知道从哪里开始,我不期待你解决它只是指出我正确的方向并让我知道发生了什么!

如果你想看看网站应该做什么,请在FF或Chrome中打开它!

非常感谢,

2 个答案:

答案 0 :(得分:1)

出现在main.js的第102行附近的代码:

$(wid).animate({
  opacity: opacity,
  left: left,
  top: top,
  bottom: bottom,
  right: right
}, 200);

将'undefined'作为'top'的值传递。

我的建议,

上面的代码......应该做更像这样的事情:

var options = { opacity: opacity };
if(id == "chat") {
  jQuery.extend({right: dir + amt, top: dir + amt }, options);
} else if(id == "rplayed") {
  jQuery.extend({left: dir + amt, top: dir + amt}, options);
} // snipped - you get the point
$(wid).animate(options, 200);

我还没有测试过整个jQuery.extend()调用...但是这应该解决你的无效参数问题 - IE不喜欢为CSS属性设置无效值(这包括'null','undefined',alpha当数字被期望时,'0'当'无'时,等等)。 FF,Chrome和Safari都可以优雅地处理这个问题...只需忽略CSS值(在这种情况下,它会省略你的值 - 导致渲染看起来正确)。

希望这有帮助。

答案 1 :(得分:0)

我担心我没有时间梳理来源,但是如果你已经卡住并且你已经没有了,请尝试使用firebug lite单步执行js来追踪问题。