想要使用一些"可读"的方法从元素中获取文本节点,我发现了这种我无法解释的奇怪行为.
使用以下HTML标记:
text node and b element
文本节点不是DOM元素,所以我想知道这是否有效:
var textnode = $('div').contents().filter(':not(*)'); //returns jq empty set
即使使用.filter('*')
和不返回文本节点但其他元素(b
)也会失败.
所以测试它,我使用not()方法,我不确定它是否适用于文本节点:
var textnode = $('div').contents().not('*'); //returns jq empty set
我们承认吧.但是这个返回文本节点:
var textnode = $('div').contents().not(':not(:not(*))'); //returns text node in set
那么为什么 .not('*')
失败的时候.not(':not(:not(*))')
有效呢?
我无法解释.
PS: .filter(':not(:not(:not(*)))')
失败,而我期待它完全像.not(':not(:not(*))')