繁体   English   中英

Jquery/javascript,从 ajax 响应中过滤 html object

[英]Jquery/javascript, filtering html object from ajax response

我有这块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>

我用 simple.ajax-call 抓取

var html = $.ajax({
         url: "htmlsnippet.html",
         cache: false,
         async: false,
         dataType: "html"
         }).responseText;

如果我过滤它:

var htmlFiltered = $(html).filter("#1");

它工作得很好,我得到了 id="1" 的整个 div,
但如果我使用:

var htmlFiltered = $(html).filter("#1 .text");

htmlFiltered 变量是一个空的 object。 我无法弄清楚我做错了什么。

你应该这样存储它:

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

希望这可以帮助。 干杯

如果您不需要完整的$.ajax方法提供的任何特殊功能,您应该尝试 $.load $.load()

.load() 方法与 $.get() 不同,它允许我们指定要插入的远程文档的一部分。 这是通过 url 参数的特殊语法实现的。 如果字符串中包含一个或多个空格字符,则假定字符串中第一个空格后面的部分是确定要加载的内容的 jQuery 选择器。

$('#result').load('ajax/test.html #container');

http://api.jquery.com/load/#loading-page-fragments

这对我有用:

$.get(url,function(content) {
    var content = $(content).find('div.contentWrapper').html();
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM