我正在嘗試<divs>在包含相同單詞的 html 中查找所有內容,它可能在id=""
例子:
<div id="chat_widget_th" class="bg-warning checkbox chat_open_ts">...</div>
<div class="bloom chat_inside_th dark_yellow>...</div>
<div id="opened_widget_chat" class="active show">...</div>
<div class="chat_child modal show fade">...</div>
這四個<divs>來自不同的頁面。
它們都對應于我需要排除的聊天彈出視窗。在某種程度上,所有這些都包含“聊天”這個詞。
我需要找到<divs>包含“聊天”一詞的所有(或其他標簽)并洗掉它們。為此,我將使用該功能
<script>
var regexclass = /]*?chat[^"]*?(?=")/;
var regexid = /id="\K[^"]*?chat[^"]*?(?=")/;
$('#regexclass').remove();
$('#regexid').remove();
</script>
當涉及到 時id="",上面的函式可以正常作業,因為它找到了 id 屬性的引號中包含的所有內容,這是唯一的。
另一方面,當涉及到一個類時,該函式不起作用,因為它回傳,正如我所說的,所有被引號括起來的東西。
IE
“綻放 .chat_inside_th .dark_yellow”
而該函式至少需要消除不同類之間的空格。
“.bloom.chat_inside_th.dark_yellow”
有沒有辦法在搜索類時消除這些空格,或者更好的是,只找到包含“chat”一詞的類,例如“chat_inside_th”?
uj5u.com熱心網友回復:
您可以使用屬性選擇器:https : //developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
[id*="chat"]將匹配所有ID具有屬性,聊天中他們
$("#go").on("click",e => { $('[id*="chat"],[class*="chat"]').remove(); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="chat_widget_th" class="bg-warning checkbox chat_open_ts">one</div>
<div class="bloom chat_inside_th dark_yellow">two</div>
<div id="opened_widget_chat" class="active show">three</div>
<div class="chat_child modal show fade">four</div>
<button id="go">go</button>
uj5u.com熱心網友回復:
不應使用正則運算式來決議 HTML。
相反,您可以使用DOMParser來決議 string,您可以從中選擇id或class屬性包含'chat'并洗掉它們的所有元素。
const str = `<div id="chat_widget_th" >...</div>
<div opened_widget_chat" >...</div>
<div >...</div>`;
const parsed = new DOMParser().parseFromString(str, 'text/html');
parsed.body.querySelectorAll('[id*=chat],[class*=chat]').forEach(e => e.remove())
const res = parsed.body.innerHTML;
console.log(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/369742.html
標籤:javascript 查询 正则表达式
