<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是否合法?
答案 0 :(得分:4)
有两点需要注意,首先,id
是属性,而不是属性,因此应使用attr()
/ removeAttr()
。
第二个是removeProp()
的API明确指出你不应该:
...使用此方法删除
checked
,disabled
或selected
等原生属性。这将完全删除属性,一旦删除,就不能再次添加到元素。使用.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。