我有一个带有 ID 的 div
<div id="updates-pane-user.followed_on">
这个 jquery 选择器有效
$("[id^='updates-pane']")
但这不是
$("#updates-pane-user.followed_on")
我看不出有什么问题.. id 名称可以包含句点,对吗?我错过了一些明显的东西吗?
我有一个带有 ID 的 div
<div id="updates-pane-user.followed_on">
这个 jquery 选择器有效
$("[id^='updates-pane']")
但这不是
$("#updates-pane-user.followed_on")
我看不出有什么问题.. id 名称可以包含句点,对吗?我错过了一些明显的东西吗?
在后一个选择器中,.
用于表示一个类。所以它正在寻找.followed_on
类,它显然没有找到,所以没有匹配的。
为了解决这个问题,我认为你应该用双反斜杠转义点:
$("#updates-pane-user\\.followed_on")
根据jQuery 文档:
要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为名称的文字部分,它必须使用两个反斜杠进行转义:\\。例如,id="foo.bar" 的元素可以使用选择器 $("#foo\\.bar")。
一般来说,尽量不要在您的 ID 中使用句点或其他特殊字符,以免造成混乱。“允许”与“良好做法”不同。
因为id
jQuery 语法中属性中的点表示类选择器。此选择器等效于将节点选择为:
<div id="updates-pane-user" class="followed_on">
是的,HTML5 允许在 id 中使用句点,但 jQuery 不是由 w3 组织构建的。它只是一个针对最常见情况优化的实用程序库。
如果您的 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")
因为.
selector 认为有一个类名如下
$("#updates-pane-user.followed_on")
updates-pane-user
意思是:查找所有具有 id = 且具有类名的元素followed_on
肯定会为 JQuery 识别模式创建问题。
jQuery 具有三种类型的选择器:
"."
选择器的意思是按类名选择一个元素。"#"
selector 表示通过 ID 选择一个元素。div
等input
)选择元素而且您对 ID 的命名约定感到困惑jQuery engine
。
它假设有一个 divid="updates-pane-user"
和一个 applied class="followed_on"
。在这种情况下jQuery
,建议使用//
. 下面应该是您选择元素的语法。
$("#updates-pane-user\\.followed_on");
检查一下这个错误的小提琴并尝试使用以下方法进行更正:http //
: //jsfiddle.net/ukJ8Z/
干杯!!
用它来逃避你的点:
$("#updates-pane-user\\.followed_on")
是的,Jimbo 的答案是正确的,但是您仍然可以使用转义字符来完成这项工作\\
$("#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 类选择器。