为什么=而不是 - 在选择器结果中选择所有

时间:2016-10-07 10:44:25

标签: javascript jquery html jquery-selectors

我使用jQuery遇到了一个非常奇怪的行为。我有function这样的话:

            function refreshTechBubble(techID, value) {
                $("span.top-right-data[data-id=" + techID + "]").html(value);
            }

function刷新特定的技术人员气泡。为了使其更简单和技术性,让我们说明这个函数改变了通过span选择器唯一找到的"span.top-right-data[data-id=" + techID + "]"的内部html。这一切都非常好,一切正常。

然而,在实现这一点时,我犯了一个错误,我有这个错误的实现:

            function refreshTechBubble(techID, value) {
                $("span.top-right-data[data=id=" + techID + "]").html(value);
            }

请注意,我已经意外地写了 = 而不是 - 。虽然修复是微不足道的,我现在没有任何问题要解决,但我仍然想知道我在测试过程中遇到的行为的原因。有了这样的拼写错误,我希望jQuery找不到任何标签,因此不刷新它们的内部html,而是刷新所有span class top-right-data的内部HTML。 }}。为什么我在修复之前遇到这种行为而不是我期望的行为?

1 个答案:

答案 0 :(得分:2)

这是旧版Sizzle中的一个错误,它是jQuery的一部分,包括1.7。它是在1.8中的Sizzle重写中修复的(虽然它没有列在release notes中修复的错误中。)

有趣的是,当属性选择器单独出现或由显式通用选择器限定时,所有版本的jQuery似乎都正确抛出SYNTAX_ERR。仅当属性选择器被任何其他简单选择器限定(在其之前或之后出现)时,它才会导致SYNTAX_ERR。