从ajax页面的body元素中提取所有类,替换当前页面的body类
Extract all classes from body element of AJAX-ed page and replace current page's body classes
我正在ajax化一个带有持久音乐播放器的WordPress主题。Wordpress在<body>
标签上使用动态类。基本结构如下:
<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>
我目前正在使用load('/other-page-01/ #site-container')
成功加载/other-page-01/
, /other-page-02/
等内容。但是,我需要从AJAX加载的页面中提取所有<body>
类,并动态地用它们替换当前页面的<body>
类。
注意:由于<div id="music-player">
是持久的,所以不能替换整个<body>
元素。我试过jQuery.get()
,但不能让它工作。
我如何从AJAX请求的页面提取<body>
类并用它们替换当前页面的<body>
类?
我不是很熟悉jQuery或Javascript,所以确切的代码将是非常有帮助的。如有任何帮助,不胜感激。
谢谢,亚伦
我的典型解决方案是告诉您将AJAX代码扔到jQuery对象中,然后像正常一样读取它:
$(ajaxResult).attr('class');
有趣的是,似乎你不能对<body>
元素这样做。
我想说最简单的解决方案(如果你能控制生成的HTML)就是使用一些好的正则表达式:
var matches = ajaxResult.match(/<body.*class=["']([^"']*)["'].*>/),
classes = matches && matches[1];
我说"如果你能控制生成的HTML",因为这依赖于HTML的合理格式。
另一种方法是将其解析为DOMDocument
,然后提取所需的内容,但这需要更多的时间,并且在这样的简单情况下通常是多余的。
将返回的html中的正文转换为具有特定ID的div,然后以该ID为目标获取正文(现在是div)的类
modifiedAjaxResult = ajaxResult.replace(/<body/i,'<div id="re_body"')
.replace(/<'/body/i,'</div');
$(modifiedAjaxResult).filter("#re_body").attr("class");
当然,如果主体有一个id,这将与它冲突,所以任意的数据属性可能不太可能破坏。
modifiedAjaxResult = ajaxResult.replace(/<body/i,'<div data-re-id="re_body"')
.replace(/<'/body/i,'</div');
$(modifiedAjaxResult).filter("[data-re-id=re_body]").attr("class");
http://jsfiddle.net/N68St/当然,要使用这种方法,您必须切换到使用$。得到相反。
$.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") );
});
- 获取当前页面的URL并将其附加到Facebook共享链接(使用javascript)
- 如何在 safari 中获取当前页面的 url 和标题
- Chrome扩展程序将外部JavaScript添加到当前页面的html中
- 在服务器更改时自动更新/重新加载当前页面的库
- 检测具有 href 属性的“A”标记,该属性等于当前页面的 URL
- 如何定义相对于当前页面的 URL w jQuery
- 我想通过javascript生成当前页面的url,并添加两个参数
- 从当前页面的URL中删除哈希
- 如何在手风琴导航菜单中设置当前页面子链接及其父链接的样式
- Javascript获取当前页面的html
- 如何在文本输入中显示当前页面的url,供用户复制
- 如何使用Jquery和Javascript在当前页面的Div中显示错误消息
- jQuery:添加Class Active到<与当前页href
- 如何将当前页内容追加到另一页
- 解析当前页面的html
- 使用javascript在重载时更改当前页面的URL
- 如何在不刷新页面的情况下将当前页面的url发送给servlet
- 如何提交表单并在当前页面的Div中加载目标页面
- 如何在Firefox插件中获取当前页面的SSL证书信息?
- 从ajax页面的body元素中提取所有类,替换当前页面的body类