Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在字符串中查找指定的HTML元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何在字符串中查找指定的HTML元素

Javascript 如何在字符串中查找指定的HTML元素,javascript,jquery,html,Javascript,Jquery,Html,我试图将一个网络“封装”到phonegap应用程序中,但我发现了一个问题。当我向服务器发出请求时,它会以html作为文本回答我,我想获取文本中的一些html元素并附加到应用程序index.html的div中。为此,我这样做: jQuery.get(rute, function(htmlTemplate) { var data = jQuery(htmlTemplate).find('#wrapper'); //make a small treatment to data, bu

我试图将一个网络“封装”到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());
var html='body{背景色:rgba(128128,0.3);}HOLA';
jQuery(“#content”).html(jQuery(html.find(“#test”).html());
…但不起作用


我想选择一个特定的元素来进行小处理(删除任何div或一段旁白)

希望这能对你有所帮助。在这里,我创建了临时DOM对象并对其进行了查询:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var html = '<head><style> body{background-color:rgba(128,128,128,0.3);}</style> </head> <body> <div id="test">HOLA</div> </body>';
            var mydiv = document.createElement('div');
            mydiv.innerHTML = html;

            alert(jQuery($(mydiv)).find("#test").html());
        });

    </script>
</head>
<body>
</body>
</html>

$(函数(){
var html='body{背景色:rgba(1280,0.3);}HOLA';
var mydiv=document.createElement('div');
mydiv.innerHTML=html;
警报(jQuery($(mydiv)).find(#test”).html();
});
jQuery(a)。find(b)
将只查找
a
的后代
b
。在您的示例中,#test是根节点,因此它同时是a和b,因此不会有匹配项

相反,您可以使用
.filter()

var html='body{背景色:rgba(128128,0.3);}HOLA';
jQuery(“#content”).html(jQuery(html).filter(“#test”).html());

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());