Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
IE jquery没有';在iframe中不允许show()的参数_Jquery_Internet Explorer_Iframe - Fatal编程技术网

IE jquery没有';在iframe中不允许show()的参数

IE jquery没有';在iframe中不允许show()的参数,jquery,internet-explorer,iframe,Jquery,Internet Explorer,Iframe,我有这样的JS代码: var li = $("li[attribute=foo]"); if (li.length) { li.show("slow"); // Fails } 我明白了: Error: Object doesn't support this property or method show() 同样适用于fadeIn()或scrollUp()。我还注意到closest()在另一个元素上失败。所有这些都在Firefox中工作 我怀疑这是因为所讨论的内容在iframe中(jq

我有这样的JS代码:

var li = $("li[attribute=foo]");
if (li.length)
{
  li.show("slow"); // Fails
}
我明白了:

Error: Object doesn't support this property or method
show()

同样适用于
fadeIn()
scrollUp()
。我还注意到
closest()
在另一个元素上失败。所有这些都在Firefox中工作

我怀疑这是因为所讨论的内容在iframe中(jquery本身包含在外部页面中),但是iframe中的所有其他jquery都可以工作,并且从IE调试器的角度来看,li存在并且有一个带有参数的show方法


如果您有任何想法,知道哪里出了问题,或者如何解决问题,我们将不胜感激。

根据上面的评论,这与jquery或iframe的版本无关,而是因为我的页面上有一些JS,格式如下:

Object.prototype.someCustomFunction = function( aObjects ) { ...}
值得分享我是如何解决这个问题的,以防它对任何人都有帮助。秘密在于获得jquery的完整版本,而不是经过模糊处理和压缩的版本,这样我就可以更容易地调试jquery中的错误

我发现在
Sizzle.filter
中,jquery的迭代如下:

for ( var type in Expr.filter ) { 
    if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
        ...
    }
}
关键是jquery希望找到
ATTR
子类
等作为
类型
。但它也会找到
someCustomFunction
。而
someCustomFunction
没有
exec
,因此它就失效了

目前的黑客修复方法是引入一个空的
exec
方法供jquery查找。e、 g

Object.prototype.someCustomFunction.exec = function( expr ) {}

从长远来看,我想将
someCustomFunction
限制在实际需要的地方,而不仅仅是
Object

根据上面的评论,这与jquery或iframe的版本无关,而是因为我的页面上有一些JS的表单:

Object.prototype.someCustomFunction = function( aObjects ) { ...}
值得分享我是如何解决这个问题的,以防它对任何人都有帮助。秘密在于获得jquery的完整版本,而不是经过模糊处理和压缩的版本,这样我就可以更容易地调试jquery中的错误

我发现在
Sizzle.filter
中,jquery的迭代如下:

for ( var type in Expr.filter ) { 
    if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
        ...
    }
}
关键是jquery希望找到
ATTR
子类
等作为
类型
。但它也会找到
someCustomFunction
。而
someCustomFunction
没有
exec
,因此它就失效了

目前的黑客修复方法是引入一个空的
exec
方法供jquery查找。e、 g

Object.prototype.someCustomFunction.exec = function( expr ) {}

从长远来看,我希望将
someCustomFunction
限制在实际需要的地方,而不仅仅是
Object

jQuery的哪个版本?(即,
alert($().jquery);
在iFrame中运行时显示什么?)以及
li.show(500)工作?@Matt我正在使用jquery1.4.4、IE8和li.show(500)以同样的方式失败。Hrm。这在IE8中显示出类似的症状,但它从未真正触底。不要假设您已经将页面声明为UTF-8,但是没有声明字符集的
内容类型
头,是吗?你能不能把你的代码缩小到一个小例子来说明这个问题,这样我就可以试着重现它?我至少有IE8,也可以考虑升级(至少暂时)到最近版本的jQuery;1.6.2是当前的生产版本,我希望自从1.4.4发布以来,会有很多IE8/变通方法的修复。@Matt好主意。我现在将尝试将问题隔离到一个较小的完整失败示例中,如果我能够创建它,我将发布它。乍一看,iframe是一个骗局。jQuery的哪个版本?(即,
alert($().jquery);
在iFrame中运行时显示什么?)以及
li.show(500)工作?@Matt我正在使用jquery1.4.4、IE8和li.show(500)以同样的方式失败。Hrm。这在IE8中显示出类似的症状,但它从未真正触底。不要假设您已经将页面声明为UTF-8,但是没有声明字符集的
内容类型
头,是吗?你能不能把你的代码缩小到一个小例子来说明这个问题,这样我就可以试着重现它?我至少有IE8,也可以考虑升级(至少暂时)到最近版本的jQuery;1.6.2是当前的生产版本,我希望自从1.4.4发布以来,会有很多IE8/变通方法的修复。@Matt好主意。我现在将尝试将问题隔离到一个较小的完整失败示例中,如果我能够创建它,我将发布它。乍一看,iframe是一条红鲱鱼。