为什么这个jquery选择器没有句点工作
我有一个带ID的div
这个jquery选择器工作
$("[id^='updates-pane']")
但事实并非如此
$("#updates-pane-user.followed_on")
我没有看到有什么问题。身份证名称可以包括句号吗? 我错过了一些明显的东西吗
在后一个选择器中.
用来表示一个类。 所以它正在寻找.followed_on
类,它显然没有找到,因此没有任何匹配。
为了解决这个问题,我认为你应该用双反斜杠来逃避点:
$("#updates-pane-user\\.followed_on")
根据jQuery文档 :
要使用任何元字符(例如!“#$%&’()* +,。/:; <=>?@ [] ^`{|}〜)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。例如,id =“foo.bar”的元素可以使用选择器$(“#foo \\。bar”)。
一般情况下,尽量不要在ID中使用句点或其他特殊字符以避免混淆。 “允许”与“良好做法”不同。
是的,HTML5允许使用id的句点,但j3不是由w3 org构建的。 它只是针对最常见情况进行了优化的实用程序库。
如果您的ID有一个句点或任何其他字符使jQuery将其解析为不仅仅是一个id,那么您最好使用标准函数:
$(document.getElementById(yourId))
如果您的id来自变量,这是首选解决方案。
$("#updates-pane-user\\.followed_on")
– 这应该按照Jquery文档工作
// Does not work $("#some:id") // Works! $("#some\\:id") // Does not work $("#some.id") // Works! $("#some\\.id")
因为id
属性中的点在jQuery语法中表示类选择器。 此选择器相当于选择节点为:
因为.
selector认为有一个具有以下名称的类
$("#updates-pane-user.followed_on")
表示:查找id = updates-pane-user
所有元素,其中包含类名followed_on
用它来逃避你的点:
$("#updates-pane-user\\.followed_on")
参考: http : //docs.jquery.com/Frequently_Asked_Questions#How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F
肯定会为JQuery创建问题以识别模式。
jQuery有三种类型的选择器:
-
"."
selector表示按类名选择元素。
-
"#"
选择器表示按ID选择元素。
- 和元素选择器,按名称(
div
, input
等)选择元素
而且您已经将jQuery engine
与ID的命名约定混为一谈。
它假设有一个id="updates-pane-user"
的div和一个应用的class="followed_on"
。 在这种情况下, jQuery
建议使用//
来转义序列。 下面应该是你的syntex来选择元素。
$("#updates-pane-user\\.followed_on");
看看这个错误的小提琴并尝试使用//
更正: http : //jsfiddle.net/ukJ8Z/
干杯!!
是的吉博答案是正确的,但你仍然可以使用\\
转义角色
$("#updates-pane-user\\.followed_on")
逃脱两(2)个反斜杠。
检查此链接,了解How do I select an element by an ID that has characters used in CSS notation?
您还可以使用id属性选择器,如:
$('[id="updates-pane-user.followed_on"]')
因为jQuery会将该属性视为字符串,而不是jQuery类选择器。