我有这段HTML:
<div id="1">
<div class="text">
Text for div 2
</div>
<img src="images/image1.jpg"></img>
</div>
<div id="2">
<div class="text">
Text in div 2
</div>
<img src="images/image2.jpg"></img>
</div>
我通过一个简单的.ajax调用来获取
var html = $.ajax({
url: "htmlsnippet.html",
cache: false,
async: false,
dataType: "html"
}).responseText;
如果我用:
过滤它var htmlFiltered = $(html).filter("#1");
它工作正常,我得到整个div与id =“1”,
但如果我使用:
var htmlFiltered = $(html).filter("#1 .text");
htmlFiltered变量是一个空对象。 我无法弄清楚我做错了什么。
答案 0 :(得分:12)
你应该这样存储:
$.ajax({
url: "htmlsnippet.html",
cache: false,
async: false,
dataType: "html",
success: function(data){
html = data;
}
}
编辑:你获取HTML的方式有效,但不建议这样做
您无法获取最后一个元素,因为您使用的是filter
而不是find
,因此您应该拥有:
var htmlFiltered = $(html).find("#1 .text");
而不是
var htmlFiltered = $(html).filter("#1 .text");
此外,W3C建议不要使用数字ID。
编辑2 :这应该有效:
var htmlFiltered = $(html).filter("#1").find(".text");
希望这会有所帮助。干杯
答案 1 :(得分:3)
如果您不需要完整$.ajax
方法提供的任何特殊功能,则应尝试$.load()
:
与$ .get()不同,.load()方法允许我们指定要插入的远程文档的一部分。这是通过url参数的特殊语法实现的。如果字符串中包含一个或多个空格字符,则假定第一个空格后面的字符串部分是jQuery选择器,用于确定要加载的内容。
$('#result').load('ajax/test.html #container');
答案 2 :(得分:0)
这对我有用:
$.get(url,function(content) {
var content = $(content).find('div.contentWrapper').html();
...
}