2010-05-20 60 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);