2010-05-20 128 views
0

我遇到了更改某個ID的屬性的問題,似乎無法弄清楚我做錯了什麼。我想這也沒有幫助,我也是新手。使用jquery更改屬性的問題

我有一個函數,測試以確保我從我動態創建的表單中的行拉出正確的ID。它是這樣的:

myFunction() { 
    var id = $(id).attr("id"); 
    alert("This is my id " + id); 
} 

這工作沒有問題,當我點擊指定的按鈕,提醒我,我的ID,它會給我的動態行的ID在我的形式。現在的問題是,當我試圖用這個更改ID:

changeId() { 
    var newId = $(id).attr("id", "x"); 
    alert("This is my new id " + newId); 
} 

在這種情況下會發生什麼事是,它會提醒說:「這是我的新ID [對象的對象]」,而不是給我新的ID 。有什麼建議麼?我真的很感謝任何幫助。

+1

這些示例看起來不完整。他們缺少'function'關鍵字,變量'id'未定義。也爲此 – RoToRa 2010-05-20 13:44:01

回答

5

.attr(attribute, value)一次(所以你可以保留鏈接)返回jQuery對象,如果你想要的是分配的ID,你需要這樣做:

changeId() { 
    var newId = $(id).attr("id", "x").attr("id"); 
    alert("This is my new id " + newId); 
} 

雖然直接的路線要好得多,例如:

changeId() { 
    var newId = "x" 
    $(id).attr("id", newId); 
    alert("This is my new id " + newId); 
} 
+0

+1。花了最多的努力寫,你甚至取得了鏈接,仍然設法只有3秒短:第一:-) – 2010-05-20 13:44:30

+2

尼克,爲什麼你在修改'changeId()'中捕獲'newId'?這對我來說會更有意義:'changeId(){var newId ='x'; $(ID)。attr('id',newId); alert('這是我的新ID'+ newId); }' – 2010-05-20 13:48:06

+0

@熊 - +1 - 好點,那更乾淨,更新。 – 2010-05-20 13:52:21

1

您正在設置,並沒有越來越多。當您使用.attr來設置屬性 - 而不是您設置的值時,會返回jQuery對象。嘗試:

changeId() { 
    $(id).attr("id", "x"); 
    var id = $(id).attr("id"); 
    alert("This is my new id " + newId); 
} 
1

attr(name, value)返回一個jQuery對象。這是爲了支持jQuery方法鏈接。

你想

changeId() { 
    // ------------------------------v method chaining! 
    var newId = $(id).attr("id", "x").attr("id"); 
    alert("This is my new id " + newId); 
} 

或者乾脆

changeId() { 
    $(id).attr("id", "x"); 
    alert("This is my new id " + id.id); 
} 

也許你還可以找到比id變量一個更好的名字。

1

使用一個參數運行.attr()返回屬性的值。

運行.attr()帶有兩個參數將返回它所針對的jQuery對象。

文檔:http://api.jquery.com/attr/用於設置一個屬性時

1

attr返回原始jQuery對象不是新的屬性值。

1

只需更改DOM節點的id屬性。適用於所有瀏覽器,不能簡單:

var el = document.getElementById("your_id"); 
el.id = "new_id"; 
alert(el.id);