让我说我有这个:
$('a').each(function() {
$(this).click(function(e) {
e.preventDefault();
var href = $(this).attr('href');
$('#somediv').load(href + ' #foo');
});
});
现在我如何让它加载#foo
的内部内容而不是实际的div #foo
还不太清楚我的意思?
<div id="foo">
<!-- Load these divs only -->
<div class="children">bar</div>
<div class="children">bar</div>
<div class="children">bar</div>
<div class="children">bar</div>
<div class="children">bar</div>
<!-- // -->
</div>
我只想加载div的内部内容。非常感谢任何帮助!
编辑:已解决
我使用了解包方法:
parent.load(href + ' #' + ident + '', function() {
$('#'+ident+' > div').children().unwrap();
});
答案 0 :(得分:6)
如果您不介意使用$.get
并手动加载零件,可以相当轻松地完成此操作,如下所示:
$.get(href, function(html) {
$('#somediv').html(
$(html).find('#foo').html()
);
});
使用href
从$.get
抓取完整的HTML大块,然后在成功回调中,我们在整堆HTML中找到id="foo"
元素,并使用.html()
然后使用#somediv
的mutator格式将内容复制到.html()
。
如果你知道#foo
只会包含<div>
个孩子,那么你可以试试这个:
$('#somediv').load(href + ' #foo > div');
我不确定这是否有效,我没有设置好的测试用例,但.load
documentation表示它应该可以正常工作。如果#foo
不仅包含<div>
,则您必须提出其他与child selector (>
)一起使用的内容。当然,如果#foo
包含未包含在元素中的文本,那么我认为您仍然坚持使用上面的$.get
方法。
答案 1 :(得分:1)
通过使用>
选择器和星号,可以仅加载锚的子代:
$('#somediv').load(href + ' #foo > *');
答案 2 :(得分:-1)
你可以试试这个:
$(this).click(function(e) {
e.preventDefault();
var href = $(this).attr('href');
$('#somediv').load(href + '#foo *',
function() {
$('#somediv #foo').remove();
});
});