-1

使用以下设置

<div id="foo"/>​

JavaScript (jQuery 1.8.0):

$('#foo').removeProp('id').prop('id', 'bar');

alert($('#bar').length);
alert($('#foo').length);
alert($('#undefined').length);​

请注意,元素 ID 没有bar像我预期的那样更新(只有最终警报产生1)(Chrome 21)

这似乎与我使用removeProp('id'); 虽然在此示例中是多余的(当我可以直接将 设置id为时bar),但在我的最终代码中是必需的。

现在我很好奇在 JavaScript 中删除 ID的正确方法是什么;我应该用过removeAttr()吗?这是jQuery中的错误吗?设置ID后删除是否合法?

4

3 回答 3

4

这里有两点需要注意,第一点是id是属性,不是属性,所以应该用attr()/代替。removeAttr()

第二个是removeProp()明确注意您不应该使用的 API:

...使用此方法删除本机属性,例如checked,disabledselected. 这将完全删除该属性,并且一旦删除,就不能再次将其添加到元素中。用于.prop()将这些属性设置为false

此外,与其先取消设置,然后再设置,不如简单地使用以下命令进行更改attr()

$(elem).attr('id', 'newValue');
于 2012-09-20T19:47:21.673 回答
2

我不确定你在尝试什么.. 但要设置 ID,你可以简单地设置如下,

$('#foo')[0].id = 'bar'

但是jQuery在下面确实提到了,

.removeProp()方法删除该方法设置的属性.prop()

对于 DOM 元素或窗口对象的某些内置属性,如果尝试删除该属性,浏览器可能会生成错误。jQuery 首先将值undefined分配给属性,并忽略浏览器生成的任何错误。通常,只需要删除已在对象上设置的自定义属性,而不需要删除内置(本机)属性。

注意:请勿使用此方法删除本机属性,例如选中、禁用或选中。这将完全删除该属性,并且一旦删除,就不能再次将其添加到元素中。使用 .prop() 将这些属性设置为 false。

于 2012-09-20T19:48:45.113 回答
0

删除呢?

delete object['property'];

我认为这完全删除了它,而不仅仅是将其分配给未定义。

于 2012-09-20T19:51:52.800 回答