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

时间:2012-12-13 22:43:11

标签: javascript jquery

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

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

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

这是jQuery实现:

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

1 个答案:

答案 0 :(得分:2)

比较(来自Chrome 23):

> $('<div>').addClass('foo').removeClass('foo').attr('class')
""

> $('<div>').attr('class')
undefined

在前一种情况下,元素仍然具有class属性,但它没有值。

在后一种情况下,元素根本没有class属性。

正在发生的事情是jQuery使用简单的字符串操作来删除类,如果结果字符串为空,那么就是使用它 - 它永远不会完全删除class属性。

在Chrome中,甚至DOM3 classList函数都会留下一个空的class属性 - 调用el.classList.add('foo')后跟el.classList.remove('foo')将(在没有任何其他类的情况下)离开你有一个空的class