我认为这会更容易找到:)
$.get('/page.html', function(data) {
//get only contents of class="contents"
});
我似乎无法找到如何做到这一点。
答案 0 :(得分:2)
只需使用.find()
:
$(data).find(".contents")
以下是您可以使用的最终代码:
$.get('/page.html', function(data) {
var contents = $(data).find(".contents");
});
然后,根据.contents
的元素类型,您可以使用contents.html()
或contents.text()
(大多数元素)或contents.val()
(输入元素)。
从技术上讲,另一个想法是使用.filter()
。
这完全取决于data
中HTML的结构。如果您的结构是这样的:
<div id="main">
blah blah
<div class="contents"></div>
</div>
然后$(data)
的结果为[#main]
,您需要使用find
。如果您的结构如下:
<div id="main"><div>
<div class="contents"></div>
<div class="another"></div>
然后$(data)
的结果为[#main, .contents, .another]
,您需要使用filter
。
当然,结合它们,可能是:
$.get('/page.html', function(data) {
var all = $(data), contents;
contents = all.filter(".contents");
if (!contents.length) {
contents = all.find(".contents");
}
if (contents.length) {
// It/they was/were found at some point
}
});
答案 1 :(得分:2)
我会做这样的事......
$.get('/page.html', function(data){
var $page = $(data)
var $contents = $page.filter('.contents'); /* this will get a reference to the .contents */
/* do more stuff here
....
*/
});
查看此SO的接受答案:Get HTML of div element returned by .get with jQuery
如果返回内容的结构不确定(由于.find()
是后代,有时您需要使用.contents
,您可以随时执行检查并运行.filter()
反之亦然。
示例:
$contents = $page.filter('.contents');
if($contents.length == 0) {
$contents = $page.find('.contents');
}
只是基于其他答案中发表的评论的想法。
答案 2 :(得分:2)
如果从返回的data
创建jQuery对象,并且jQuery集中的包装元素是.contents
元素,则find
无法找到目标元素,如果{{1}元素是一个后代元素,然后contents
方法无法选择该元素。您可以创建一个虚拟元素,使用返回的数据填充它并使用filter
方法。
find