使用jquery更改属性的问题

时间:2010-05-20 13:39:19

标签: javascript jquery

我在更改id的属性时遇到问题,似乎无法弄清楚我做错了什么。我想我也是新手也无济于事。

我有一个测试功能,以确保我从我动态创建的表单中的行中提取正确的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。有什么建议?我真的很感激任何帮助。

6 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

您正在设置,而不是获取。当您使用.attr设置属性时返回jQuery对象 - 而不是您将其设置为的值。尝试:

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

答案 2 :(得分: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更好的变量名称。

答案 3 :(得分:1)

使用一个参数运行.attr()将返回属性的值。

使用两个参数运行.attr()将返回调用它的jQuery对象。

文档:http://api.jquery.com/attr/

答案 4 :(得分:1)

attr用于设置属性时返回原始jQuery对象而不是新属性值。

答案 5 :(得分:1)

只需更改DOM节点的id属性即可。适用于所有浏览器,并且不能简单:

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