jQuery中的.removeProp()是否存在错误,或者我是否做错了什么?
列表框中选定的项目将显示在下面的UL中。单击UL中的项目,它将从列表框中删除该项目,并从UL中删除自身 复制错误:jQuery中的.removeProp()是否存在错误,或者我是否做错了什么?,jquery,Jquery,列表框中选定的项目将显示在下面的UL中。单击UL中的项目,它将从列表框中删除该项目,并从UL中删除自身 复制错误: 在列表框中选择一个项目 单击UL中的该项,它将消失,列表框将显示为未选中 单击列表框中的同一项 请注意,事件已激发,但未添加该项 现在执行相同的步骤,除了使用.prop('selected','')而不是.removeProp('selected'):您需要知道的一切都是 对于DOM元素或窗口对象的某些内置属性,如果试图删除该属性,浏览器可能会生成错误。jQuery首先将未定义
- 在列表框中选择一个项目
- 单击UL中的该项,它将消失,列表框将显示为未选中
- 单击列表框中的同一项
现在执行相同的步骤,除了使用.prop('selected','')而不是.removeProp('selected'):您需要知道的一切都是 对于DOM元素或窗口对象的某些内置属性,如果试图删除该属性,浏览器可能会生成错误。jQuery首先将未定义的值指定给属性,并忽略浏览器生成的任何错误。通常,只需要删除已在对象上设置的自定义属性,而不需要删除内置(本机)属性 注意:不要使用此方法删除本机属性,例如选中、禁用或选中的属性。这将完全删除该属性,一旦删除,就不能再次添加到元素中。使用
.prop()
将这些属性改为false
您应该使用
removeAttr()
$('myele').attr('selected');//-->
$('myele').removeAttr('selected');//-->代码>我认为您混淆了html属性和DOM属性。我想不出你为什么要删除“selected”属性。只需将其设置为false:
$('ul').on('click', 'li', function() {
$('option[value="' + $(this).text() + '"]').get(0).selected = false;
$(this).remove();
});
编辑:Grr,我以为那些JSFIDLE是只读的-(我猜prop
是直接的对象属性,不同于attr
,它处理元素属性。不是吗?使用removeAttr
会破坏我的整个代码。。当没有属性的时候,你有没有可能做不到removeAttr
?就像removeClass不关心是否没有类一样,他只会忽略它。这是对于这类事情,通常建议始终使用prop而不是attr:有趣。使用较旧版本的jQuery,一旦升级,它就不起作用了。我想较新版本只是为了防止您提到的问题。