只在IE7中出现的奇怪问题,其他浏览器都没有。

7

这是一个简单的HTML页面,

我使用了jquery-ui(1.10)和jquery (1.9.1)。在IE8、9和Firefox中都能正常工作,在Chrome中只有在IE7中才能正常工作。
HTML代码中有以下内容。我不知道它是什么以及它来自哪里。
当我在IE8、9、Firefox和Chrome中查看这个HTML时,这段代码并不存在。

sizzle-1367496452938="[object Object]

并且所有的div标签都注入了这个内容

jQuery191030626454110549073="6"

这是一段HTML代码,有人知道这个问题是什么吗?

     <html sizzle-1367496167699="[object Object]">

        <div class="container" id="container2" 
sizzle-1367496452938="[object Object]">


            <div class="arrow-left" id="wppanelstatus" 
    style="width: 1%;" jQuery191030626454110549073="6"/>

更新
我没有使用sizzle javascript选择器库。

2个回答

6

这是jQuery在IE中用于附加事件处理程序等的方法。

它被称为expando。它只是一个字符串,基本上是“jQuery”+时间戳(实质上是一个唯一值)。

而且,jQuery依赖于Sizzle,所以您肯定在使用它....

您可以在此处阅读更多信息: jQuery属性自动添加到元素


这个特定于IE7吗?它不适用于其他版本/浏览器。 - Sankara
只有IE7和IE8才能做到这一点...http://msdn.microsoft.com/en-us/library/ie/ms533747%28v=vs.85%29.aspx - Expando是一个仅限于IE的属性,它“设置或检索一个值,指示是否可以在对象内创建任意变量”。显然。 - Matt Derrick

4

经过一些研究,这篇文章完美地回答了我的问题

我只是从上面的博客中复制粘贴而来

jQuery如何使用Sizzle选择元素

选择过程

jQuery内置了很多优化,使得程序运行更快。在本节中,我将遍历一些查询,并尝试追踪jQuery所遵循的路径。

$(‘#header’)

当jQuery看到输入字符串只有一个单词并且正在查找id时,jQuery会调用document.getElementById。简单明了。此时不会调用Sizzle。

$(‘#header a’)在现代浏览器上

如果浏览器支持querySelectorAll,则querySelectorAll将满足此请求。此时不会调用Sizzle。

$(‘.header a[href!=”hello”]’)在现代浏览器上

在这种情况下,jQuery将尝试使用querySelectorAll,但结果会导致异常(至少在Firefox上)。浏览器将抛出异常,因为querySelectorAll方法不支持某些选择条件。在这种情况下,当浏览器抛出异常时,jQuery将将请求传递给Sizzle。 Sizzle不仅支持css 3选择器,而且还超越了它。

$(‘.header a’)在IE6/7上

在IE6/7上,querySelectorAll不可用,因此jQuery将向Sizzle传递此请求。让我们稍微详细看一下Sizzle如何处理此情况。

Sizzle获取选择器字符串“.header a”。它将字符串拆分为两个部分并存储在名为parts的变量中。

1 parts = ['.header', 'a'] 下一步是将Sizzle与其他选择器引擎区分开来的步骤。 Sizzle不是首先查找具有类标题的元素,然后向下移动,而是从最外层的选择器字符串开始。根据Paul Irish的演示,YUI3和NWMatcher也会从右到左进行搜索。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接