2009-07-05 143 views
3

所以,我有JQuery動態生成控件。輸入控件被稱爲EnterLink +生成的控件的數量。在生成新的輸入控件時,我想更改先前創建的輸入以禁用它。現在我的代碼看起來如此,它不起作用。JQuery動態ID控件屬性

if (rowCount > 0) { 
        var last = rowCount - 1; 
        $("#EnterLink" + last).disabled = true; 
        } 

這看起來像應該工作,我檢查了控件的ID,這就像他們格式化。

回答

10

替換此:

$("#EnterLink" + last).disabled = true; 

有了這個:

$("#EnterLink" + last).attr('disabled', true); 

的jQuery不公開定期的DOM通過其$()功能屬性直接。你在那裏有一個包裝集(即授予,只會匹配1個元素,但仍是一個集),它擴展了元素並將所有jQuery的優點添加到它中。

如果你想獲得的#EnterLinkX本機的DOM元素,你可以這樣做:

$("#EnterLink" + last)[0].disabled = true; 

這工作,因爲$()返回值是類似陣列的結構,其中包含匹配的元素。 [0]將包含第一個(在這種情況下只)匹配。這會讓你訪問像innerHTML等。 99%的時間,儘管如此,你最好使用「jQuery方式」,因爲這是圖書館的全部要點。在這種情況下,您可以使用它的attr函數來設置該屬性,並且它的removeAttr函數可以刪除被禁用的值,如果您想要的話。

+0

Gracias! 15個特徵極限 – 2009-07-05 08:21:55

+0

完美的答案 - 完整,簡潔,正確! :) – 2009-10-30 17:26:01

2

如果你想禁用一個按鈕,它是以下內容。

$( 「#EnterLink」 +最後).attr( 「已禁用」,真正的); 或 $(「#EnterLink」+ last).attr(「disabled」,「disabled」);