我有一个包含长html代码的字符串(resultString)。这些代码分为2个主要DIV,窗口和弹出窗口。
resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>"
现在我想分别检索窗口和弹出DIV的html内容,并将它们放在2个不同的字符串中(stringWindow和stringPopup)。
stringWindow = "<div id=\"window\">window content --- long html codes</div>";
stringPopup = "<div id=\"PopUp\">Popup content --- long html codes</div>";
在jQuery / javascript中有没有简单的方法呢? stringWindow是在Ajax json webmethod函数中构造的。任何帮助都非常感谢!提前谢谢。
答案 0 :(得分:3)
您可以使用filter()
和outerHTML
filter
,您可以使用特定选择器outerHTML
获取HTML内容
var resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>",
stringWindow, stringPopup;
stringWindow = $(resultString).filter('#window')[0].outerHTML;
stringPopup = $(resultString).filter('#PopUp')[0].outerHTML;
console.log(stringPopup, stringPopup);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:2)
jQuery中的琐碎:
var resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>"
var $doc = $("<div>" + resultString + "</div>");
var stringWindow = $doc.find('#window').text();
var stringPopup = $doc.find('#PopUp').text();
console.log("window", stringWindow);
console.log("popup", stringPopup);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- results pane console output; see http://meta.stackexchange.com/a/242491 -->
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
&#13;
普通的JS并没有那么难。
如果通过&#34;只是内容&#34;你不是指&#34; text&#34;但在div中标记,然后用text()
替换html()
。
编辑:制作成可执行代码段。
答案 2 :(得分:2)
不使用jQuery的版本,不假设它在文档中或可以放入文档但仍然将其解释为HTML -
var domParser = new DOMParser(),
doc = domParser.parseFromString(resultString, "text/html"),
content = ["window", "PopUp"].map(function(id) {
return doc.querySelector("#" + id).innerHTML;
}),
stringWindow = content[0],
stringPopup = content[1];
答案 3 :(得分:1)
试试这个。这个对我有用。 Demo
resultString = "<div id=\"window\">window content --- long html codes</div> <div id=\"PopUp\">Popup content --- long html codes</div>";
var res = resultString.split("</div>");
stringWindow = res[0].replace(/^<div[^>]*>|<\/div>$/g, '');
stringPopup = res[1].replace(/^<div[^>]*>|<\/div>$/g, '');
希望它有所帮助。
答案 4 :(得分:1)
我认为这可能会对您有所帮助: -
var resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>"
var splitter = document.createElement('div');
splitter.innerHTML = resultString;
var window = $(splitter).find("#window")
var poppup = $(splitter).find("#PopUp")
如果有帮助则标记为答案
答案 5 :(得分:1)
这是使用C#...
进行此操作的一种方法这可能有帮助...
将结果字符串视为......
string resultPopUp = resultString.Substring(resultString.IndexOf("<div id=\"PopUp"));
string resultWindow = resultString.Substring(resultString.IndexOf("<div id=\"window"), resultString.Length - resultString.IndexOf("<div id=\"PopUp\">")+2);
以下应该工作..
<div id=\"*****\">
将字符串结构维护为<select id="portfolioSubTypes" name="portfolioSubTypes" data-bind="ojComponent: {component: 'ojSelect', validators: [genericSelectionValidator],
value: portfolioSubTypesVal,disabled: allCustomersPlaceHolder() ? true : false,
options: portfoliosubTypeLst, optionsKeys: {label: 'subalertTypeDesc', value: 'subalertTypeId'},
rootAttributes: {style:'max-width:20em'}}">
</select>
这应该有效....
答案 6 :(得分:0)
如果您只想要内容,请执行以下操作: 用jQuery:
stringWindow =$('#window').innerHTML
stringPopup =$('#PopUp').innerHTML
只有JS:
stringWindow =document.getElementById('window').innerHTML
stringPopup =document.getElementById('Popup').innerHTML