如何选择除“div”之外的元素?

时间:2012-05-12 11:57:06

标签: jquery jquery-selectors

  

可能重复:
  Getting text within element excluding decendants

我正在尝试使用:not.not(),但仍无效。我希望结果只是“星期一”。

示例标记:

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

2 个答案:

答案 0 :(得分:3)

jQuery并不是真的&#34;做&#34;文本节点,所以这是您使用原始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 ]"

Live example | source

请注意前后的空格,因为文本节点在文本&#34; Monday&#34;之前和之后都有空格。您可以使用$.trim()来摆脱它。

更多阅读:

答案 1 :(得分:3)

您需要查看元素的textNodes

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

console.log(textNodes.text());

JSFiddle