如何在jQuery的.load调用中选择<body>标签内的所有元素?

4
当使用.load()时,我知道可以通过使用ID来选择调用文件中的特定元素,例如:
$('#replacediv').load('loadme.htm #loaddiv');

我希望能够使用一个选择器来获取 BODY 标签内的所有内容,而不必将所有内容都放在 DIV 标签中。
$('#replacediv').load('loadme.htm');

例如,这个不起作用:

$('#replacediv').load('loadme.htm body');

感谢您,Brian。

2
你尝试添加回调并执行alert(responseText)来查看响应中是否真的有body标签了吗?当你说“它不起作用”时,你确切地是什么意思? - Robin
你的第三行代码“应该”可以工作。如果我猜测的话,响应没有<body>标签。 - Matt Ball
1
在文档中提到:“jQuery使用浏览器的.innerHTML属性来解析检索到的文档并将其插入到当前文档中。(...)因此,通过.load()检索到的元素可能与直接由浏览器检索到的文档不完全相同。” - Pawel Zubrycki
3个回答

2

你可以给body标签添加一个id或class,然后使用它来实现这个功能吗?


我尝试给body标签添加ID,但没有返回任何内容,这让我感到惊讶。我很确定我在某个地方看到过一个选择器语法,用于指定body标签内的所有标记。我只是找不到它了。我试图解决的问题是不要将标题信息(如样式表)与body标签一起返回。这实际上会在我的结果HTML中重复所有内容。 - Bth
在body标签后使用这个怎么样,将其包装在div中。 <div class="body">... - Jon
你正在将HTML加载到一个已经有body标签的现有文档中。一个文档只能有一个body标签,因此当使用load时,它会自动过滤掉其他内容,并提取出body标签内的HTML。 - Jon
这不是我的情况,Jon。如果你不提供选择器,它会将头部和身体压平然后插入。而且这个身体选择器仍然在3年后不起作用。令人恼火。 - nic ferrier

0

编辑:抱歉,我的错,您的示例应该有效。您可能遇到了文件路径或其内容的问题。


不需要使用ID。如果字符串中包含一个或多个空格字符,则假定字符串的第一个空格后面的部分是一个jQuery选择器,用于确定要加载的内容。 - Matt Ball

0

或许这个可以工作

var allelement = $(document.body.getElementsByTagName("*"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接