0

当没有属性值时,为什么 jQuery 不删除类或样式的属性名称?

例如,$('<div>').addClass('foo').removeClass('foo')返回[<div class>​&lt;/div>​]而不是[<div>​&lt;/div>​]

我的猜测是性能,但也许还有其他原因。

这是jQuery实现:

https://github.com/jquery/jquery/blob/master/src/attributes.js#L88

4

1 回答 1

2

比较(来自 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.

于 2012-12-13T22:51:08.693 回答