removeProp for ID属性

时间:2012-09-20 19:44:19

标签: jquery properties

使用following setup

<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后删除ID是否合法?

3 个答案:

答案 0 :(得分:4)

有两点需要注意,首先,id是属性,而不是属性,因此应使用attr() / removeAttr()

第二个是removeProp()的API明确指出你不应该:

  

...使用此方法删除checkeddisabledselected等原生属性。这将完全删除属性,一旦删除,就不能再次添加到元素。使用.prop()将这些属性设置为false

此外,为什么不用attr()更改它,而不是取消设置,然后进行设置:

$(elem).attr('id', 'newValue');

答案 1 :(得分:2)

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

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

但是jQuery确实提到了下面的内容,

  

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

     

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

     

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

答案 2 :(得分:0)

如何删除?

delete object['property'];

我认为完全删除它不仅仅是将它分配给undefined。