当没有属性值时,为什么 jQuery 不删除类或样式的属性名称?
例如,$('<div>').addClass('foo').removeClass('foo')
返回[<div class></div>]
而不是[<div></div>]
我的猜测是性能,但也许还有其他原因。
这是jQuery实现:
https://github.com/jquery/jquery/blob/master/src/attributes.js#L88
当没有属性值时,为什么 jQuery 不删除类或样式的属性名称?
例如,$('<div>').addClass('foo').removeClass('foo')
返回[<div class></div>]
而不是[<div></div>]
我的猜测是性能,但也许还有其他原因。
这是jQuery实现:
https://github.com/jquery/jquery/blob/master/src/attributes.js#L88
比较(来自 Chrome 23):
> $('<div>').addClass('foo').removeClass('foo').attr('class')
""
和:
> $('<div>').attr('class')
undefined
在前一种情况下,元素仍然有一个class
属性,但它没有值。
在后一种情况下,元素根本没有class
属性。
发生的事情是 jQuery 使用简单的字符串操作来删除类,如果结果字符串为空,那么这就是使用的 - 它永远不会class
完全删除属性。
在 Chrome 中,即使是 DOM3classList
函数也会留下一个空class
属性 - 调用el.classList.add('foo')
后跟el.classList.remove('foo')
will(在没有任何其他类的情况下)会给您留下一个空的class
.