我有一个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 \\巴。”)。
在一般情况下,尽量不要使用期限或其他特殊字符在你的ID,以避免各地混乱。 “允许”是不一样的“好习惯”。
是的,HTML5允许时期ID,但jQuery是不是由W3组织建设。 这只是最常见的情况进行了优化的工具库。
如果你的ID有一段时间,或任何其他字符做的jQuery解析它不仅仅是一个标识越多,那么你最好使用标准函数:
$(document.getElementById(yourId))
这是首选的解决方案,如果您的身份证来自一个变量。
$("#updates-pane-user\\.followed_on")
- 这应该作为每jQuery的文档
// Does not work
$("#some:id")
// Works!
$("#some\\:id")
// Does not work
$("#some.id")
// Works!
$("#some\\.id")
因为在该点的id
,其在jQuery的语法表示类选择属性。 这个选择是等效于选择节点作为:
<div id="updates-pane-user" class="followed_on">
因为.
选择认为有以下名称类
$("#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的有三种类型选择的:
"."
选择器装置选择由类名的元素。 "#"
选择器装置选择由ID的元素。 div
, input
等) 你混淆了jQuery engine
ID为您的命名约定。
它假设有一个DIV id="updates-pane-user"
和应用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类选择。