繁体   English   中英

用jQuery更改属性的问题

[英]Issue with changing an attribute with 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。 有什么建议么? 我真的很感谢任何帮助。

.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);
}

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

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

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漂亮的名称。

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

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

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

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

只需更改DOM节点的id属性。 可在所有浏览器中使用,再简单不过了:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM