2012-07-11 77 views
2

我有一个奇怪的行为,也许我失去了一些东西。用jQuery选择一个dom元素不适用于这个ID?

我有这样的DOM元素(SharePoint功能区的元素,但并不重要),我想通过ID使用jQuery选择:

<span class="ms-cui-row" 
id="Ribbon.EditingTools.CPEditTab.Font-Medium-0-0">...</span> 

如果我用类名$('.ms-cui-row')选择它,我可以选择它但与ID我不能$('#Ribbon.EditingTools.CPEditTab.Font-Medium-0-0')。我甚至不能用$('[id="Ribbon.EditingTools.CPEditTab.Font-Medium-0-0"]')来选择它。

那么这里有什么意思?也许这不是一个好主意,在一个ID名称中使用点 - 但这是微软不是我,我不能改变它。但对他们来说似乎没问题?

我准备了一个jsfiddle玩弄。

+0

检查:http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F – Chandu 2012-07-11 03:24:01

+3

必须逃脱!'“#$%&'()* +,/ :; <=>?@ [\]^\'{|}〜' – david 2012-07-11 03:25:22

+0

微软在每个苹果所在的市场中都有点滴,即使是id属性。 – iambriansreed 2012-07-11 03:33:06

回答

5

在jQuery选择器中(除了类选择器的开始处),不能有.,因为jQuery会假定它指向的是元素上的类。用\\逃脱它。

另外,jQuery中的id选择器是$("#id")

您的新选择:

$('#Ribbon\\.EditingTools\\.CPEditTab\\.Font-Medium-0-0') 
+0

好的谢谢你的帮助,我很感激。我试图用'\',但只有一个,而不是两个。但是,正如你所看到的那样也行不通... – Marc 2012-07-11 03:31:46

+0

问题是'document.write',我的不好:http://jsfiddle.net/ambiguous/RDCMU/ – 2012-07-11 03:31:52

+0

@Marc:''#Ribbon \\ .EditingTools \\。CPEditTab \\。Font-Medium-0-0''work fine。 – 2012-07-11 03:33:05

2
alert($('#Ribbon\\.EditingTools\\.CPEditTab\\.Font-Medium-0-0').length) 

为我工作。

+0

嗯,不适合我......我在Chrome上,你使用哪个浏览器? – Marc 2012-07-11 03:32:42

+0

@Marc:在Safari中适用于我:http://jsfiddle.net/ambiguous/xf7nP/ – 2012-07-11 03:35:35

+0

啊,它对我也有用,对不起,我想我的小提琴有一个错误。 – Marc 2012-07-11 03:41:53

相关问题