<a href="#">
<span class="myspan"> Don't want this text </span>
I want this text
</a>
如何在没有跨度内的文字的情况下抓住上面的文字? 假设跨度可能出现
答案 0 :(得分:2)
这并不像你希望的那样漂亮,但至少它不涉及克隆:
$('a').contents()
.get()
.map(function(n) { return n.nodeType === 3 ? n.textContent.trim() : ''; })
.join('')
请参阅Fiddle
答案 1 :(得分:0)
Jsfiddle演示:https://jsfiddle.net/b0424w4L/
<强>代码强>
function getDirectLastText(ele) {
var txt = null;
[].forEach.call(ele.childNodes, function (v) {
if (v.nodeType == 3) txt = v.textContent.replace(/^\W*\n/, '');
});
return txt;
}
解释
甚至文本也是DOM中的节点。它是调用文本节点,就像html注释也是一个节点。只有那些没有显示。此函数获取最后一个文本节点并显示它。可以很容易地扩展它以显示元素内的所有文本节点并排除所有子元素。
$(this).contents().filter(function() {
return this.nodeType == 3;
}).text()