IE7中的奇怪问题只在其他任何浏览器中都没有

时间:2013-05-02 12:18:24

标签: jquery html css internet-explorer-7 sizzle

这是一个简单的HTML,
我有jquery-ui(1.10)和jquery(1.9.1)。它在IE8,9,firefox和Chrome中只能在IE 7中正常工作 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 个答案:

答案 0 :(得分:6)

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

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

jQuery取决于sizzle所以你肯定使用它....

您可以在这里阅读更多内容: jQuery attribute auto added to elements

答案 1 :(得分:4)

经过一些研究,this answer my question 100%

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

jQuery如何使用Sizzle选择元素

选择过程

jQuery已经进行了大量优化,以使运行速度更快。在本节中,我将介绍一些查询,并尝试跟踪jQuery遵循的路径。

<强> $(“#头”)

当jQuery看到输入字符串只是一个单词并且正在查找id时,jQuery会调用document.getElementById。直接而简单。没有调用Sizzle。

现代浏览器上的

$('#header a')

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

在现代浏览器上

$('。header a [href!=“hello”]')

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

IE6 / 7上的

$('。header a')

在IE6 / 7上,querySelectorAll不可用,因此jQuery会将此请求传递给Sizzle。让我们详细了解Sizzle将如何处理这个案例。

Sizzle获取选择器字符串'.header a'。它将字符串分成两部分并存储在变量中称为部分。

1 parts = ['.header','a'] 下一步是将Sizzle与其他选择器引擎区分开来的步骤。 Sizzle首先从最外层的选择器字符串开始,而不是首先查找具有类头的元素然后向下。根据保罗爱尔兰YUI3和NWMatcher的演示,也从右到左。