使用字符串或DOM操作筛选AJAX响应

Filter AJAX response with String or DOM manipulation?

本文关键字:筛选 AJAX 响应 操作 DOM 字符串      更新时间:2023-09-26

我得到的是AJAX响应,需要将其裁剪为只包含我想要的元素。据我所知,我有两个主要的选择。第一种选择是将响应作为字符串进行操作,使用substringsplit和其他字符串方法,然后附加一个时间。另一种选择是附加到一个伪元素,然后使用jQuery方法从那里进行操作。

DOM操作非常昂贵,而且会减慢加载时间。字符串操作对代码来说是一种痛苦,感觉越来越"粗糙",而且可能变得几乎难以辨认。对我来说,两者都很糟糕。你建议我使用什么和/或你能建议一种不同的方法吗?

更新:

响应是来自RSS提要的字符串,我在服务器端什么都做不了。

使用第二个,但在得到所需内容之前不要触摸DOM。JQuery函数可以接受任意的HTML,并在其中构造DOM节点,之后您可以进行所有想要的过滤,然后附加:

var $nodes = $("<div class='a'>1</div><div class='b'>2</div>");
$('#a_stuff').append($nodes.filter('div.a'));
$('#b_stuff').append($nodes.filter('div.b'));

您可以过滤ajax请求,只获取HTML的某些部分作为响应。所以你会做$.get('/your_url #filtered_content', data, complete_callback_func);参见http://api.jquery.com/load/有关详细信息,

您可以简单地使用$(responseString),它返回一个jQuery对象,您可以像普通的dom对象一样操作该对象。

示例

var ajaxResponse = '<div class="outer"><span class="inner">Some text</span></div>';
var obj = $(ajaxResponse );

现在你可以像这个一样将.iner跨度附加到主体上

obj.children('.inner').appendTo('body');