1

可能重复:
在不包括后代的元素中获取文本

我正在尝试使用:not.not()仍然无法正常工作。我希望结果只是“星期一”。

示例标记:

 <td id="day_id">
  Monday
   <div class='spec_class'>
    <span>One</span>
    <span>Two</span>
   </div>
</td>
4

2 回答 2

3

jQuery 并没有真正“做”文本节点,所以这是少数几个最好使用原始 DOM 方法的地方之一:

var text = "",
    node;
for (node = $("#day_id")[0].firstChild; node; node = node.nextSibling) {
    if (node.nodeType === 3) { // 3 = text node
        text += node.nodeValue;
    }
}
console.log("[" + text + "]"); // "[ Monday ]"

实例| 来源

注意之前和之后的空格,因为在文本“Monday”之前和之后都有带有空格的文本节点。你可以$.trim()用来摆脱它。

更多阅读:

于 2012-05-12T11:58:44.980 回答
3

您需要查看元素的 textNodes

var td = jQuery("#day_id");
var textNodes = td.contents().filter(function() {
        return this.nodeType == 3;
    });

console.log(textNodes.text());

JSFiddle

于 2012-05-12T12:11:35.163 回答