我使用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。 }}。为什么我在修复之前遇到这种行为而不是我期望的行为?
答案 0 :(得分:2)
这是旧版Sizzle中的一个错误,它是jQuery的一部分,包括1.7。它是在1.8中的Sizzle重写中修复的(虽然它没有列在release notes中修复的错误中。)
有趣的是,当属性选择器单独出现或由显式通用选择器限定时,所有版本的jQuery似乎都正确抛出SYNTAX_ERR。仅当属性选择器被任何其他简单选择器限定(在其之前或之后出现)时,它才会导致SYNTAX_ERR。