【发布时间】:2011-01-09 22:27:17
【问题描述】:
我有一个链接了一个 CSS 的文档。如何将当前的 CSS 替换为来自我刚刚使用 jQuery 通过 AJAX 请求获取的文档的一个?
这是我现在正在尝试的代码,但到目前为止没有成功:
$(function() {
$.get('next_page.html', function(data, textStatus) {
$('link[rel=stylesheet]:first')
.attr('href', $(data).find('link[rel=stylesheet]:first').attr('href'));
});
});
更新: $.find() 在任何浏览器中都不起作用(经过测试的 Firefox 3.5, Mac 上的 Chrome 和 Safari 3),但是 $.filter() 只找到样式表 在 Firefox 3.5 中 - 仍然没有 Chrome 和 Safari 3。
应该很简单吧 - 用新的 CSS href 替换当前的 CSS href,然后瞧?
由于某种原因,jQuery 无法在 <head> 标记内找到来自 AJAX 请求的任何内容。此外,jQuery 甚至无法从 AJAX 数据中找到整个 <head> 本身。也就是说,回调函数内部的$(data).find('head').size()返回0。
我使用的是 jQuery 1.4。
2010 年 2 月 10 日更新:我向 jQuery 提交了一个关于此的错误,他们同意无法从 ajax 数据的 <head> 标记中找到任何内容。
这是我得到的回复:
http://dev.jquery.com/ticket/6061#comment:1 — “是的,没错 - 解析 直接的 HTML 我们只保证 body 元素的内容。如果你 希望访问页面的 XML 直接然后我建议你 明确地制作文件 .xhtml 或 以 XML 格式请求它,例如:"
【问题讨论】:
-
问题会不会是ajax结果没有加载到DOM中,所以jQuery在DOM中搜索它不起作用?尝试将其作为子项附加到 current_page 上的不可见 div,然后查看是否可以抓取链接标签(然后删除 div 以保持整洁)