在jQuery选择器中使用哈希

在jQuery选择器中使用哈希,jquery,jquery-selectors,Jquery,Jquery Selectors,我使用jQuery1.8.0作为WordPress插件的一部分,存储鼠标点击x/y坐标,并保留节点信息,包括父路径信息(类似于) 经过一些实验后,我注意到jQuery无法读取我存储的一些选择器。一些例子: html#:eq(0)->不需要“#”但jQuery使用或不使用“#”来计算它 body#:eq(0)->jQuery无法对此进行计算,它将中止/停止在此行(与html标记的行为不同) div#:等式(1)->jQuery对此进行计算(是否应该中止?) div:eq(1)->jQuery在此行

我使用jQuery1.8.0作为WordPress插件的一部分,存储鼠标点击x/y坐标,并保留节点信息,包括父路径信息(类似于)

经过一些实验后,我注意到jQuery无法读取我存储的一些选择器。一些例子:

html#:eq(0)
->不需要“#”但jQuery使用或不使用“#”来计算它
body#:eq(0)
->jQuery无法对此进行计算,它将中止/停止在此行(与html标记的行为不同)

div#:等式(1)
->jQuery对此进行计算(是否应该中止?)
div:eq(1)
->jQuery在此行中止/停止(应该工作吗?)

这是一个bug吗(如果是,我会向jQuery报告)?根据对这个问题的评论,我的理解是,当且仅当元素有id时,才应该出现“#”,但这似乎不是jQuery的行为方式。

散列是元素的一部分,因此当您基于某个id针对元素时,必须包含该散列,并且不能包含在所有其他情况下


你所有的例子都属于后一类。

我不明白这个问题?在“怪癖”中,你是指bug吗?“即使没有id标记,什么时候也必须包含散列(#)以及什么时候不能使用它?”你的第一部分和第二部分互相回答……你能用另一个版本测试吗。似乎它适用于1.7.1,您的示例与您的问题有什么关系?很明显,这些都不是ID,您不应该在任何选择器中使用
。如果您试图报告一个bug,请在他们的bug跟踪器中报告。我想我生成路径的代码没有添加“#”,在某些情况下不应该添加“#”,在某些情况下jQuery可以原谅,而在其他情况下则不能。我的主要观点是,为什么jQuery需要一个“div:eq(1)”,即使这个元素没有id?为什么“div:eq(1)”也不能工作?为什么'body':eq(0)'挂起,但是'html':eq(0)'不挂起,这两个'#'不是都是多余的吗?我甚至没有看到示例与所问问题之间的任何关系。我给出的div示例是针对一个没有id的元素,例如blah等。为什么这个选择器需要哈希,例如div:eq(1)。如果我不包括#jQuery挂起。@ByronStuart:选择器不需要散列。您的代码可能有bug,或者由于某种原因运行速度非常慢;包含散列会导致异常并停止脚本执行,所以您看不到这一点。你看过浏览器的JS控制台了吗?@Jon我理解你的逻辑,但看起来情况恰恰相反。如果我不包含“#”,javascript就永远不会进入下一行代码。如果我包含了“#”,它将对其进行评估并继续。也许这是1.8.0中的一个bug?