jQuery text() 方法不适用于文本节点
jQuery text() method doesn't work on textnodes
jQuery text() 方法不适用于文本节点:
$('div').contents().filter(function(){
return this.nodeType === 3;
}).text("new text");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
textNode text doesn't change
</div>
我的问题是 这可能是什么原因?
关于withespace文本节点,这很难处理吗? And/or 比仅子节点更深层次的后代文本节点?
我不是在问如何更改它,我知道解决方法,但为什么 jq text()
方法不支持文本节点?我希望在任何能够更改其节点值的文本节点上使用此方法。
我很确定这是有充分理由的,我不能只是得到它。
what could be the reason for that?
因为这不是 text
设计的目的。来自 the docs:
...set the text contents of the matched elements
(我的重点)
为什么 它不是设计用来这样做的,这是 John Resig and/or 当前一组 jQuery 维护者的问题,但据推测,有它处理文本节点以及元素会使方法复杂化。它必须检查 nodeType
并设置 nodeValue
如果它是一个文本节点,或者做它当前所做的(我不知道他们是否做 innerText
/textContent
或为元素附加一个文本节点,可能是前者)。
大部分jQuery以元素为中心,忽略其他节点。 contents
是在节点级别工作的极少数方法之一。
jQuery text() 方法不适用于文本节点:
$('div').contents().filter(function(){
return this.nodeType === 3;
}).text("new text");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
textNode text doesn't change
</div>
我的问题是 这可能是什么原因?
关于withespace文本节点,这很难处理吗? And/or 比仅子节点更深层次的后代文本节点?
我不是在问如何更改它,我知道解决方法,但为什么 jq text()
方法不支持文本节点?我希望在任何能够更改其节点值的文本节点上使用此方法。
我很确定这是有充分理由的,我不能只是得到它。
what could be the reason for that?
因为这不是 text
设计的目的。来自 the docs:
...set the text contents of the matched elements
(我的重点)
为什么 它不是设计用来这样做的,这是 John Resig and/or 当前一组 jQuery 维护者的问题,但据推测,有它处理文本节点以及元素会使方法复杂化。它必须检查 nodeType
并设置 nodeValue
如果它是一个文本节点,或者做它当前所做的(我不知道他们是否做 innerText
/textContent
或为元素附加一个文本节点,可能是前者)。
大部分jQuery以元素为中心,忽略其他节点。 contents
是在节点级别工作的极少数方法之一。