我在更改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。有什么建议?我真的很感激任何帮助。
答案 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)
答案 4 :(得分:1)
attr
用于设置属性时返回原始jQuery对象而不是新属性值。
答案 5 :(得分:1)
只需更改DOM节点的id
属性即可。适用于所有浏览器,并且不能简单:
var el = document.getElementById("your_id");
el.id = "new_id";
alert(el.id);