我正在尝试为jQuery的load()编写XMLHttpRequest()替换。它过滤了返回的HTML,证明是困难的。
$(".articleBody").load(url+" .articleBody > *", function() {
// code goes here
});
到目前为止我已经。
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function (data) {
var response = (httpRequest.responseText);
//code goes here
}
httpRequest.open('GET', url);
httpRequest.send();
答案 0 :(得分:1)
您必须执行.load
所做的一切:清空目标元素,解析响应,找到要获取的元素并将它们插入目标。 querySelectorAll
在这里会非常有用。
var target = document.querySelector('.articleBody');
target.innerHTML = '';
var tmp = document.createElement('div');
tmp.innerHTML = response;
var newContent = tmp.querySelectorAll('.articleBody > *');
for (var i = 0; i < newContent.length; i++) {
target.appendChild(newContent[i]);
}
以上示例仅适用于单个目标元素。如果您有多个,则必须克隆每个新节点并将其插入每个目标节点。
答案 1 :(得分:0)
你可以简单地做一个get,然后将响应解析为html,然后找到关注的元素:
$.get(url).done(function(data){
var html = $(data).find(filter);
});
$.get()
是XHR GET请求的简写函数。jQuery
函数来将HTML解析为DOM结构。find()
来查找关注的元素。查找可能会返回多个结果,因此请相应处理。