我不確定我給我的問題給出了正確的標題,但我想要求做一些類似的事情:
我想獲取父元素的 HTML 內容。通過這樣做,這也將包括子元素的 HTML 標簽,但我不想要那樣。我只想要兒童 HTML。
例如:
<div class="test"> This is content of div
<p class="boring_class" style="borinhdlfj"> This is paragraph<br> content.<span><i>As you<br> can</i></span> see I have added <br> tag</p>
</div>
從上面的例子如果我使用.text()jquery 方法來獲取 div 內容,我將只獲取文本而不是<br>標簽。但是如果我使用.html()jquery,這也將包括<p style='dflkdjf'>....</p>但我不想要。
我只想要兒童元素的 html,即:This is paragraph<br> content.As you can see I have added <br> tag.
我怎樣才能做到這一點?
最終輸出應如下所示:
This is content of div This is paragraph <br> content.As you can see I have added <br> tag
uj5u.com熱心網友回復:
作為對該問題的一種可能解釋:
獲取所有子節點的 html,包括文本 [不在子節點中]
您可以使用.contents()包含父節點的文本節點(不在標簽中的部分,例如“這是 div 的內容”),然后回圈遍歷這些節點以獲取文本或 html,具體取決于它所在的位置,給出:
var output = $(".test").contents().map((i, e) => {
if (e.nodeType == 3)
return $(e).text();
return $(e).html()
})
.toArray()
.join(" ");
console.log(output)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="test"> This is content of div
<p class="boring_class" style="borinhdlfj"> This is paragraph<br> content.As you can see I have added <br> tag</p>
</div>
請注意,這包括問題示例輸出中未包含的所有空格(換行符),因此您可能需要洗掉這些空格以進行精確匹配。
uj5u.com熱心網友回復:
您可以使用innerHTML如下所示在常規 javascript 中完成此操作。
有關更多資訊,請參閱:https : //developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
const list = document.getElementsByClassName("test")[0];
const inner = list.innerHTML;
const noP = inner.replace(/<p[^>]*>/g, "").replace(/<\/p[^>]*>/g, "").replace(/\n/g,'');
console.log(noP);
<div class="test"> This is content of div
<p class="boring_class" style="borinhdlfj"> This is paragraph<br> content.As you can see I have added <br> tag</p>
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359556.html
標籤:javascript html 查询 dom
上一篇:如何僅使用javascript驗證帶有數字的輸入欄位?
下一篇:如何處理兩個十億記錄進行檔案比較
