我正在尝试将网络“封装”到phonegap应用程序中,但我发现了一个问题。当我向服务器发出请求时,它以 html 作为文本回答我,我想获取该文本的一些 html 元素并将其附加到应用程序的 index.html 的 div 上。为此,我这样做:
jQuery.get(rute, function(htmlTemplate)
{
var data = jQuery(htmlTemplate).find('#wrapper');
//make a small treatment to data, but not yet.
jQuery('body').html(data)
});
我还有其他应用程序可以做类似的事情:
function loadPage(placeToLoad, rute, callback)
{
jQuery.get(rute, function(htmlTemplate)
{
var data = jQuery(htmlTemplate).find('#wrapperApp').parent();
if(data.html()!==undefined)
{
placeToLoad.html(data);
data = eraseNoScriptExternalPages(data);
data = eraseStylesExternalPages(data);
data = eraseLinksExternalPages(data);
makeImageScroll(data);
}
else
placeToLoad.html(htmlTemplate);
if (callback!=undefined && typeof(callback)==typeof(Function))
callback();
});
}
在第二种情况下,我需要区分来自外部服务器的页面(必须设计为不会造成附带损害)和本地页面。
情况是第二种情况有效,第一种情况无效!为什么!!!?
我试图做一个简单的测试:
var html = '<head><style> body{background-color:rgba(128,128,128,0.3);}</style> </head> <body> <div id="test">HOLA</div> </body>';
jQuery("#content").html(jQuery(html).find("#test").html());
...但不起作用。
我想选择一个特定的元素来进行小处理(删除任何 div 或旁白部分)。
最佳答案
jQuery(a).find(b)
只会查找 b
,它是 a
的后代。在您的示例中,#test 是根节点,因此它既是 a 又是 b,因此不会有匹配项。
相反,您可以使用.filter()
:
var html = '<head><style> body{background-color:rgba(128,128,128,0.3);}</style> </head> <body> <div id="test">HOLA</div> </body>';
jQuery("#content").html(jQuery(html).filter("#test").html());
关于javascript - 如何在字符串中查找指定的 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26538410/