我对这个问题感到困惑,这个问题在我推出IE 9开发工具之后似乎已经开始了。我正在使用Visual Studio 08开发(因为页面是ASP.net ap的一部分),并且在所有其他浏览器中工作的所有突然简单的Jquery选择器在IE中都不起作用 - 在VS内部浏览器(IE7)中或者在独立的IE 9中.Visual Studio告诉我一个Jquery插件(Scrollpane或Preload,取决于哪个被称为第一个)是“未定义的”。我没有其他错误。
我删除了插件和对它们的引用。我还删除了一个在预加载期间阻止点击的叠加层。这对IE没有任何影响。
这是一行代码,无论我做多么明确,都不会在IE中运行:
$('#pictureholder > div.display > img[src|="' + image + '"]').parent('div.display').removeClass('noshow').addClass('nowshow').fadeIn('slow');
这可以在其他浏览器中运行,无论是否有显式父选择器。
答案 0 :(得分:0)
<img>
。
Sizzle在不支持querySelectorAll()elem [attr]的UAs中使用,返回image-src的转换路径。所以选择器不匹配。 我认为这是一个真正的错误,因为它不是CSS规范中定义的行为。
您可以使用filter()代替:
$('#pictureholder > div.display > img')
.filter(function(){return $(this).attr('src').match(new RegExp('^('+image+'|'+image+'-.*)$'));})
.parent('div.display')//continue the chain here
或改变Sizzle的行为。为此,请在嵌入式jquery.js之后插入以下指令:
jQuery.find.selectors.attrHandle.src= function( elem )
{
return elem.getAttribute( "src",2 );
}
(它会强制Sizzle使用文档中定义的属性而不是元素的属性)