一尘不染

jQuery / javascript,从ajax响应中过滤html对象

ajax

我有这段HT​​ML:

<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变量是一个空对象。我不知道我在做什么错。


阅读 192

收藏
2020-07-26

共1个答案

一尘不染

您应该这样存储它:

$.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");

希望这可以帮助。干杯

2020-07-26