轉 jquery獲取兩個標籤之間文字
https://blog.csdn.net/u010403387/article/details/44197629?utm_source=blogxgwz8
如以下程式碼所示,id為tidy的<a>標籤中既存在<span>標籤,又存在“This is some text”的文字。那麼問題來了,怎麼用jquery只取“This is some text”的文字,而不取<span>裡的內容?
<a id="tidy">
<span id="Span1">First span text</span>
This is some text <span id="Span2">Second span text</span></a>
方法一:使用.html()取到a標籤中的所有內容後,用正則表示式篩選出不被有"<"、">標籤包圍的內容,並去掉換行符。
$("#tidy").html().replace(/<.*>*<.*>|\s/g,"");
評價:初步達到目標,解決問題的工具更多還是正則表示式,並且由於正則表示式的制約,該方法適用性較窄。
方法二:複製整個<a>,然後去掉a標籤的子標籤,再用.text()獲得所需文字。
<span style="font-size:14px;">$("#tidy")
.clone()//複製a標籤
.children()//找到所有子標籤
.remove()//刪除所有子標籤
.end()//退回上一匹配元素
.text();//取到所需文字</span>
評價:達到目標,但是對原表籤的操作是隻讀的,不能對原標籤中的文字進行修改。
方法三:複製整個<a>,然後去掉a標籤的子標籤,再用.text()獲得所需文字。
$("#tidy").contents().filter(function(){
return this.nodeType == 3;
})[0].nodeValue = "The text you want to replace with"
評價:達到目標,能對原標籤中的文字進行讀寫操作,但是nodeValue是js的屬性。