jQuery选择器没有选择长ID的DOM元素

时间:2013-09-02 06:22:03

标签: jquery jquery-selectors

我创建了一个带有id =“photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e.jpg”的跨度 像:

<span id="photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e.jpg">Some Text</span>

现在,当我以前用jQuery访问它时,它不会访问它:

$("#photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e.jpg")

它选择一个未定义的对象。我该如何访问它?

4 个答案:

答案 0 :(得分:3)

需要使用.转义ID中的\.,否则会将.之后的部分视为类选择器

因此,您的选择器正在寻找ID为photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e且类jpg

的元素

再次\是JavaScript中的字符串转义字符,因此在字符串中,您需要使用\转义\\以获取字符串\.

$("#photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e\\.jpg")

演示:Fiddle

答案 1 :(得分:3)

转义.运算符

 $("#photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e\\.jpg")

.是jquery中的类选择器..所以你必须使用\来转义它。

  

使用任何元字符(例如!“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为文字作为名称的一部分,必须使用两个反斜杠进行转义:\。

为什么\\ ..要将字符串作为\.,我们需要使用\来转义它.jquery doc本身有一个链接,用于解释规则集,非常有帮助,建议你仔细阅读...

jquery doc

答案 2 :(得分:1)

不要使用。答案是使用@ \\,如上所述

$("#photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e\\.jpg");

根据你的另一个改变问题。到\时使用id 你可以试试这个

var tempid = "#photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e.jpg".split(".");
var id = tempid[0] + "\\" + tempid[1];

答案 3 :(得分:0)

对于特殊(。,#,+, - ,*,/等等)我们使用字符“\”所以使用

像这样

$("#photo_e8c34d96-dea7-4e60-9dcf-e9b7efaf856e\\.jpg")