为什么jQuery在没有属性值时不会删除类或样式的属性名称?
例如,$('<div>').addClass('foo').removeClass('foo')
返回[<div class></div>]
而不是[<div></div>]
我的猜测是表现,但也许还有其他原因。
这是jQuery实现:
https://github.com/jquery/jquery/blob/master/src/attributes.js#L88
答案 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
。