2013-06-02 56 views
2

我試圖使用jQuery來得到我的網頁元素表單元素:jQuery的獲取包含ID

元素:

<a href="path" id="form1:ctlName"> 

我試圖得到這樣和失敗的因素:

$('#form1:ctlName') 

雖然這樣的工作:

document.getElementById('form1:ctlName'); 

問題是我需要只有jQuery的.css屬性。

任何人有任何想法如何獲得使用jQuery控件?

+0

從[** documentation **](http://api.jquery.com/category/selectors/):*「要使用任何元字符(如」!「#$%& '()* +,。/ :; <=>?@ [\] ^'{|}〜'')作爲名稱的文字部分,必須用兩個反斜槓進行轉義:''\\''。*。 「':'是一個元字符。 –

+0

[處理元素id jquery冒號]的可能重複(http://stackoverflow.com/questions/5552462/handling-colon-in-element-id-jquery) –

回答

2

問題出現在選擇器中的:,因爲jQuery試圖將其解釋爲選擇器的擴展名。用於選擇器的冒號的一些用法是僞類:first:last,您可以獲得這些選擇器擴展的完整列表,可以找到here

嘗試這些選擇:

$("[id='form1:ctlName']"); //Method one, encapsulating the id 
$("#form1\\:ctlName");  //Method two, escaping the colon 

這裏的工作demo

注意根據this answer,在調用本地JavaScript方法getElementById(yourId)將大約快10倍比其他方法,因此,如果性能是最重要的,你可能要考慮使用它。

2

那是因爲「:」在jQuery的特殊含義。你應該逃避它。

$('#form1\:ctlName'); // Does not work 

顯然,你應該用雙斜槓逃避它:

$('#form1\\:ctlName'); // Works 
+0

一個「\」不起作用,只有兩個「\」沒有 –

+0

你是對的,編輯過。 –

2

比其他答案(通過所有元素循環檢查ID屬性)更好的性能,是這樣說的:

$(document.getElementById('form1:ctlName')) 

jQuery只是一個包裝DOM元素的函數。你可以傳遞DOM元素給它,沒有問題。