2014-04-02 86 views
1

我有一個標籤一堆HTML的是這樣的:jQuery的ID選擇不工作

<div id="Field~1">Text text</div> 

我不能正常使用ID選擇,如:

alert($("#Field~1").text()) 

我猜測它的東西用「〜」做,但可以引用這些類型嗎?

我已經建立了的jsfiddle這裏:http://jsfiddle.net/4M97c/

+2

的'〜'也被稱爲[下一個選擇器的兄弟姐妹(http://api.jquery.com/next-siblings-selector/)。 –

回答

8

您需要使用\\來選擇所有出現在特殊字符中的特殊字符。

第一種方法:

alert($("#Field\\~1").text()) 

Working Demo

方法二:

var ID="Field~1"; 
alert($("[id='"+ID+"']").text()) 

Working Fiddle

+0

請不要使用第二種方法:) –

6

你需要逃避特殊字符~雙反斜線\\。從docs

使用任何元字符(如 「#$%&「()* +,/ :; < => @ [] ^`{? |}〜)作爲名稱的文字部分,它必須 轉義與兩個反斜槓:\\

alert($("#Field\\~1").text()) 

Updated Fiddle

0

只是這樣做:

alert($('[id="Field~1"]').text()) 

這是一串id表示,所以你不必擔心轉義特殊字符。

+2

雖然這不會使用'document.getElementById()'。 –

+0

@jack無法讓你。 – Jai

+0

您正在使用的選擇器檢查頁面上的* all *元素,並檢查它們中的任何一個是否具有屬性「id」,其值爲「Field〜1」;這遠沒有效率。 –

1

按理說最簡單的(和性能最佳的)的方式來處理在標識符的特殊字符是使用getElementById(),敷一個jQuery對象的內部。

alert($(document.getElementById('Field~1')).text()); 

另外選擇器,還$()還接受DOM元素並將其變爲一個jQuery對象。