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什么样的问题?什么样的身份证?戴斯特罗伊:你的最后一段说得对!我有@这可能是问题所在吗?谢谢大家的回答!