如何使用jQuery为元素添加ID?

4

我似乎无法为jQuery创建的对话框中的按钮添加ID。在声明对话框后,可以通过以下选择器选择按钮:

var buttons = $("#dialog").siblings(".ui-dialog-buttonpane").find("button");

但是当我尝试执行以下操作时:

buttons[0].attr('id', 'someId');

我得到了以下错误信息:
TypeError: 对象 #<an HTMLButtonElement> 没有方法 'attr'
有什么建议吗?我没有在jQuery文档中看到任何暗示 attr() 在按钮上不能使用。

我同意@jigfox的观点- 目前您有13个问题,没有接受任何答案。 - Tomalak
抱歉 - 我总是有点忘记。现在正在修复它。 - subrama6
1个回答

10

是的:

$(buttons[0]).attr('id', 'someId');

attr() 方法是在 jQuery 对象上声明的,但 buttons[0] 给出的是一个标准的 DOM 对象(在本例中是 HTMLButtonElement 类型)。jQuery 对象是 DOM 对象的增强数组,因此对它们进行索引总是会返回原始 DOM 对象。

由于 jQuery 不会向 DOM 对象本身添加方法,所以必须先将 DOM 对象包装在 jQuery 对象中才能访问这些方法。

EDIT 然而……并不需要完全使用 jQuery 来完成此任务。

buttons[0].id = 'someId';

@GenericTypeTea:哦,是的,有一种更简单的方法。请看我的编辑。 - Tomalak
@GenericTypeTea:使用jQuery太容易让人误以为DOM已经不存在了,所有的操作都必须通过jQuery来完成。 - Tomalak
@Tomalak - 我知道你的意思。有时候我会完全忘记DOM和JavaScript这样的东西。jQuery很棒,但有时可能会趋近于邪恶 - djdd87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接