.load()div的内容而不是整个div

时间:2014-09-23 02:33:46

标签: javascript jquery

$('#content').load(href + ' #content');

是否可以只加载#content的内容,而不是加载整个<div id="contents">,这样我就可以阻止<div id="contents"><div id="contents"></div></div>了?

我忘了在很多页面上放置包装器,如果有一个解决方法,这将节省我一些时间。

4 个答案:

答案 0 :(得分:1)

我想你可以试试

$('#content').load(href + ' #content > *');

注意:如果#content有任何文本节点作为其子节点(不是后代),那么它可能无效(文本节点可能无法复制)

演示:Fiddle


另一种解决方案是手动删除第二个包装器(如果它存在,如

$('#content').load('ajax.html' + ' #content', function () {
    if ($(this).children('#content').length) {
        $(this).contents().unwrap()
    }
});

演示:Fiddle

答案 1 :(得分:0)

为什么不首先将它们粘贴在其他地方然后移动到你想要的地方

$(document.createElement('div')).load(href + ' #content', function (e) {
    var elms = this.firstChild.childNodes,
        parent = document.getElementById('content');
    while (elms.length) {
        parent.appendChild(elms[0]);
    }
});

答案 2 :(得分:0)

load()方法主要用于加载远程数据..

您不能拥有两个具有相同ID的元素。

$( "#result" ).load( "page.html #desiredContent" );

答案 3 :(得分:0)

$ .load函数在请求完成时需要处理程序(http://api.jquery.com/load/)。因此,当您请求匹配的##内容&#39;来自其他页面的元素,具有完整的功能只返回内部html。类似的东西:

$('#content').load(href + ' #content',function(data){ return data.html(); });