我有一个javascript函数,可以将所有相对网址转换为绝对网址。
function rel2Abs(_relPath, _base);
//_relPath the relative path
//_base the base url
现在我想将函数应用于文档字符串(jQuery post ajax response)中的所有href和src值。
这样做最简单的解决方案是什么? 有没有办法用正则表达式解决这个问题?
编辑:jQuery可用
答案 0 :(得分:3)
您可以使用jQuery使用$.parseHTML
解析html字符串,并将生成的dom nodes数组包装在jQuery对象中。从理论上讲,您可以直接将html传递给$
,但如果HTML以纯文本格式启动,则可能会出现问题。
这是您可以使用的实用功能:
!function($) {
$.extend({
fromHtml: function (html) {
return $($.parseHTML(html));
}
});
}(jQuery);
然后你可以简单地做一些事情:
var urlConverter = function (i, v) {
return rel2abs(v, 'yourBaseUrl');
},
$dom = $.fromHtml(yourHtml)
.filter('[href]').attr('href', urlConverter).end()
.filter('[src]').attr('src', urlConverter).end();
答案 1 :(得分:1)
假设您的AJAX响应是text / html,您可以将其包装在jQuery对象中并对其执行DOM操作。像这样:
// in success handler -- assuming 'data' = returned value
var $data = $(data);
$('a', $data).each(function() {
$(this).attr('href', function(val) {
return rel2abs(val, baseUrl); // assuming baseUrl is a global
})
});
$data.appendTo(someElement);
img
元素将遵循相同的模式,只需更改$('img', $dom)
和$(this).attr('src', fn)
。