2017-08-05 68 views
3

在一個HTML字符串保持一個元素的ID我有一個包含HTML字符串:使用JavaScript或jQuery的

<div class="infodiv"> 
<p id="111"><span class="text">111</span></p> 
<p id="222"><span class="text">222</span></p> 
<p id="333"><span class="text">333</span></p> 
</div> 

我會把它放在谷歌地圖信息窗口的內容。

但是,我想在infowindow上顯示之前通過id刪除一些元素。

例如:我只想保留id = 111的元素。

所以,我的HTML字符串將只顯示:

<div class="infodiv"> 
<p id="111"><span class="text">111</span></p> 
</div> 

任何想法我怎麼能實現呢?

感謝

+1

這幾乎是不可能實現的,因爲我們不知道明天要刪除其ID。 –

回答

1

您可以使用使用jQuery.parseHTML()後jQuery中的:not CSS選擇器?

$(".infodiv p:not(#111)").remove(); 
 
console.log($(".infodiv").html())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="infodiv"> 
 
<p id="111"><span class="text">111</span><span></span></p> 
 
<p id="222"><span class="text">222</span><span></span></p> 
 
<p id="333"><span class="text">333</span><span></span></p> 
 
</div>

+0

_「我有一個html字符串」_ HTML在哪裏被轉換爲DOM元素在Answer? – guest271314

2

如果你只是想保留的.infodiv一個孩子,:not是一個不錯的選擇。否則,請看filter()方法。

+0

完美。這裏不是直截了當的。 –

+0

_「我有一個html字符串」_ – guest271314

+0

該字符串可以很容易地渲染到DOM中,過濾並再次序列化爲一個字符串。 –

0

HTML元素的 id不能與數字[0-9]

開始

6 Basic HTML data types

ID和名稱標記必須以開始字母([A-Za-z]),可以是 ,後跟任意數量的字母,數字([0-9]),連字符(「 - 」), 下劃線(「_」) ,冒號(「:」)和句點(「。」)。


在替代在HTML id屬性的第一位爲一個字母,例如 "a"

要將HTML字符串轉換爲DOM元素,您可以將.innerHTML的HTML元素設置爲<template>元素。

創建應從HTML字符串中刪除的id的最後部分的陣列,迭代父元素的.children,呼叫.removeChild().querySelector()和屬性具有選擇結束時,使用.replace()從生成的HTML字符串刪除不必要的換行符。

const html = `<div class="infodiv"> 
 
<p id="111"><span class="text">111</span></p> 
 
<p id="222"><span class="text">222</span></p> 
 
<p id="333"><span class="text">333</span></p> 
 
</div>`; 
 

 
const template = document.createElement("template"); 
 

 
template.innerHTML = html; 
 

 
const p = template.content.children[0]; 
 

 
const not = ["222", "333"]; 
 

 
for (let id of not) { 
 
    p.removeChild(p.querySelector(`[id="${id}"]`)) 
 
} 
 

 
let parsedHTML = template.innerHTML.replace(/\n/g, ""); 
 

 
console.log(parsedHTML);