Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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 从AJAX ed页面的body元素中提取所有类并替换当前页面';s身体类别_Javascript_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 从AJAX ed页面的body元素中提取所有类并替换当前页面';s身体类别

Javascript 从AJAX ed页面的body元素中提取所有类并替换当前页面';s身体类别,javascript,jquery,ajax,wordpress,Javascript,Jquery,Ajax,Wordpress,我正在用一个持久的音乐播放器制作一个WordPress主题。Wordpress在标记上使用动态类。基本结构如下: <html> <head> </head> <body class="unique-class-1 unique-class-2 unique-class-3"> <div id="site-container"> <nav class="nav-prim

我正在用一个持久的音乐播放器制作一个WordPress主题。Wordpress在
标记上使用动态类。基本结构如下:

<html>
    <head>
    </head>
    <body class="unique-class-1 unique-class-2 unique-class-3">
        <div id="site-container">
            <nav class="nav-primary">
                <a href="/other-page-01/">Other Page 01</a>
                <a href="/other-page-02/">Other Page 02</a>
            </nav>
            <div class="site-inner">
                <p>Site Content Here</p>
            </div>
        </div>
        <div id="music-player"></div>
    </body>
</html>

此处的网站内容

我目前正在使用
加载('/other-page-01/
)成功加载
/other-page-02/
等的内容。但是,我需要从AJAX加载的页面中提取所有
类,并用它们动态地替换当前页面的

注意:由于持续的
,因此不能替换整个
元素。我尝试了
jQuery.get()
,但无法使其工作

如何从AJAX请求页面提取
类,并用它们替换当前页面的
类?

我对jQuery或Javascript不是很熟悉,因此确切的代码将非常有用。非常感谢您的帮助

谢谢


Aaron

我的典型解决方案是告诉您将AJAX代码放入jQuery对象中,然后像平常一样读取:

$(ajaxResult).attr('class');
有趣的是,似乎不能用
元素来实现这一点

我认为最简单的解决方案(如果您可以控制生成的HTML)就是使用一些好的ol'regex:

var matches = ajaxResult.match(/<body.*class=["']([^"']*)["'].*>/),
    classes = matches && matches[1];
var matches=ajaxResult.match(//),
类=匹配项和匹配项[1];
我说“如果你能控制生成的HTML”,因为这取决于HTML的格式是否合理


另一种方法是将其解析为
DOMDocument
,然后提取您需要的内容,但这需要花费更多的时间,而且在像这样的简单情况下通常是多余的。

将返回的html中的主体转换为具有特定ID的div,然后以该ID为目标获取主体的类(现在是div)


modifiedAjaxResult=ajaxResult.replace(/Jeezes
document.body.className
显示您的尝试,这样我们就可以告诉您您做错了什么。@adeneo这行不通,他正在从他在AJAX中加载的某个对象的body元素中查找类名,即,它是一个字符串。@samanime-哦,没有注意到,大多数情况下,当使用jax,特别是在使用load()和类似的选择器时。
modifiedAjaxResult = ajaxResult.replace(/<body/i,'<div id="re_body"')
                               .replace(/<\/body/i,'</div');
$(modifiedAjaxResult).filter("#re_body").attr("class");
modifiedAjaxResult = ajaxResult.replace(/<body/i,'<div data-re-id="re_body"')
                               .replace(/<\/body/i,'</div');
$(modifiedAjaxResult).filter("[data-re-id=re_body]").attr("class");
$.get("/other-page-01/",function(ajaxResult){
    var modifiedAjaxResult = ajaxResult.replace(/<body/i,'<div data-re-id="re_body"')
                                   .replace(/<\/body/i,'</div');
    alert($(modifiedAjaxResult).filter("[data-re-id=re_body]").attr("class"));
    // the following line replicates what `.load` was doing.
    $(someElement).append( $("<div>").html(ajaxResult).find("#site-container") );
});