10

嗨,我正在尝试获取具有特定类的另一个 HTML 文件中的所有 DIV 的 ID。要加载我使用的文件:

$.get("blocks.html", function(data) {
        //here I don't know how :)
});

现在我正在寻找这样的东西:

data.$('.block').each(... the rest is no problem

所以我不在我的页面代码上使用 jQuery 选择器,而是在数据变量的竞争中使用。感谢帮助!

4

4 回答 4

10
$.get("blocks.html", function(data) {
    var ids = $('<div/>').html(data).find('div.block').map(function() {
        return this.id;
    }).get();
});
于 2013-05-16T14:57:47.037 回答
8

尝试这个:

$.get("blocks.html", function(data) {
        $(data).find('.block').each(function(){...});
});

如果您的“数据 html”包含元素是“.block”,请查看@undefined 的答案

于 2013-05-16T14:57:18.237 回答
3

答案实际上取决于从 GET 请求返回的 responseText 的样子。基于此,您必须将其包装或不包装。

与父母

如果响应嵌套在父标签内。

响应标记:

<div>
   <div id="someId1"></div>
   <div id="yourId" class="block"></div>
   <div id="someId2"></div>
</div>

JavaScript:

var htmlFiltered = $(html).find('.block');

没有父母

如果响应没有包含内容的父节点,则需要添加父节点或使用过滤器。

响应标记:

<div id="someId1"></div>
<div id="yourId" class="block"></div>
<div id="someId2"></div>

JavaScript:

var htmlFiltered = $(data).filter('.block');

或者

var htmlFiltered = $("<div/>").html(data).find('.block');

获取 ID

您可以使用map()or each()onhtmlFiltered来获取 ID。

each()

var ids = [];
htmlFiltered.each( function () {
 ids.push(this.id);   
});
console.log(ids);

map()

var ids = $.map(htmlFiltered, function (elem) {
 return elem.id;   
});
console.log(ids);
于 2013-05-16T15:00:25.693 回答
0

尝试:

$.get("blocks.html", function(data) {
        $(data).find('.block').each(...
});
于 2013-05-16T14:58:33.933 回答