Javascript JQuery:What';s使用#[objectId]或[id=objectId]引用元素之间的区别

Javascript JQuery:What';s使用#[objectId]或[id=objectId]引用元素之间的区别,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,有谁能告诉我使用#[objectId]或[id=objectId]引用元素有什么区别吗?第一个非常快,因为jQuery在识别模式(使用正则表达式)时在内部使用getElementById 第二种方法要求jQuery迭代具有id的所有对象。这非常慢。在这种情况下,当jQuery找到一个匹配项时,它甚至不会停止迭代 使用[id..选择器的唯一合法原因是,您不只是按确切的id进行搜索,例如,您可能希望使用$('[id^=something]')搜索id以“something”开头的所有元素 假设您有一

有谁能告诉我使用
#[objectId]
[id=objectId]
引用元素有什么区别吗?

第一个非常快,因为jQuery在识别模式(使用正则表达式)时在内部使用
getElementById

第二种方法要求jQuery迭代具有id的所有对象。这非常慢。在这种情况下,当jQuery找到一个匹配项时,它甚至不会停止迭代

使用
[id..
选择器的唯一合法原因是,您不只是按确切的id进行搜索,例如,您可能希望使用
$('[id^=something]')
搜索id以
“something”
开头的所有元素

假设您有一个有效的HTML()和一个有效的id,那么
$(“#”+someId)
(例如,当您的id包含一个引号或任何破坏Sizzle模式识别系统的内容时)仍然可能会有问题。在这种情况下,请使用
$(document.getElementById(someId))


根据您的评论:是的,ID中的
“@”
使Sizzle(jQuery的选择器引擎)无法理解您的选择器。Sizzle使用以下正则表达式:

rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
rquickExpr=/^(?:\s*()[^>]*|#([\w-]*)$/,

/^(?:\s*()[^>]*|#([\w-]*)$/。测试('#som@thing“)
返回
false

没有差异(速度除外)。它们返回相同的内容。1.性能,2.可读性。我在使用#objectID的某些情况下遇到一些问题…如果你对#object有问题,那是因为你有多个id为的元素,这是无效的HTML@user3301806什么样的问题?什么样的身份证?戴斯特罗伊:你的最后一段说得对!我有@这可能是问题所在吗?谢谢大家的回答!