19

我有一个带有 ID 的 div

<div id="updates-pane-user.followed_on">

这个 jquery 选择器有效

$("[id^='updates-pane']")

但这不是

$("#updates-pane-user.followed_on")

我看不出有什么问题.. id 名称可以包含句点,对吗?我错过了一些明显的东西吗?

4

9 回答 9

33

在后一个选择器中,.用于表示一个类。所以它正在寻找.followed_on类,它显然没有找到,所以没有匹配的。

为了解决这个问题,我认为你应该用双反斜杠转义点:

$("#updates-pane-user\\.followed_on")

根据jQuery 文档

要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为名称的文字部分,它必须使用两个反斜杠进行转义:\\。例如,id="foo.bar" 的元素可以使用选择器 $("#foo\\.bar")。

一般来说,尽量不要在您的 ID 中使用句点或其他特殊字符,以免造成混乱。“允许”与“良好做法”不同。

于 2013-02-07T14:26:44.183 回答
4

因为idjQuery 语法中属性中的点表示类选择器。此选择器等效于将节点选择为:

<div id="updates-pane-user" class="followed_on">

于 2013-02-07T14:28:19.907 回答
4

是的,HTML5 允许在 id 中使用句点,但 jQuery 不是由 w3 组织构建的。它只是一个针对最常见情况优化的实用程序库。

如果您的 ID 有句点,或者任何其他使 jQuery 将其解析为不仅仅是 id 的字符,那么您最好使用标准函数:

$(document.getElementById(yourId))

如果您的 id 来自变量,这是首选解决方案。

于 2013-02-07T14:30:04.453 回答
4

$("#updates-pane-user\\.followed_on")-这应该按照Jquery 文档工作

// Does not work
 $("#some:id")

 // Works!
 $("#some\\:id")

 // Does not work
 $("#some.id")

 // Works!
 $("#some\\.id")
于 2013-02-07T14:31:27.400 回答
2

因为.selector 认为有一个类名如下

$("#updates-pane-user.followed_on")

updates-pane-user意思是:查找所有具有 id = 且具有类名的元素followed_on

于 2013-02-07T14:27:45.010 回答
2

肯定会为 JQuery 识别模式创建问题。

jQuery 具有三种类型的选择器:

  1. "."选择器的意思是按类名选择一个元素。
  2. "#"selector 表示通过 ID 选择一个元素。
  3. 和元素选择器,通过名称(divinput )选择元素

而且您对 ID 的命名约定感到困惑jQuery engine

它假设有一个 divid="updates-pane-user"和一个 applied class="followed_on"。在这种情况下jQuery,建议使用//. 下面应该是您选择元素的语法。

$("#updates-pane-user\\.followed_on");

检查一下这个错误的小提琴并尝试使用以下方法进行更正:http //: //jsfiddle.net/ukJ8Z/

干杯!!

于 2013-02-07T14:36:50.743 回答
2

用它来逃避你的点:

$("#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

于 2013-02-07T14:29:57.200 回答
1

是的,Jimbo 的答案是正确的,但是您仍然可以使用转义字符来完成这项工作\\

$("#updates-pane-user\\.followed_on")

使用两 (2) 个反斜杠进行转义。

检查此链接How do I select an element by an ID that has characters used in CSS notation?

于 2013-02-07T14:29:25.053 回答
0

您还可以使用 id 属性选择器,例如:

$('[id="updates-pane-user.followed_on"]')

因为 jQuery 会将属性视为字符串,而不是 jQuery 类选择器。

于 2015-10-09T10:03:32.753 回答