我有一个功能,目的是更新通过 jQuery.get() 加载到页面中的 HTML 链接。后端应用程序有数以千计的链接,这些链接无法轻松更新以包含完整路径,因此当转换为单页应用程序时,当需要包含完整路径时,许多链接都是相对于/的。
我在这里阅读了几个关于从相对路径转换为绝对路径并找到绝对路径的问题,但它们不太适合我正在尝试做的事情,而且我对 Javascript 和 jQuery 的理解仍然很薄弱我不知道如何在这个症结之外寻找答案。
这是我的功能:
// handle modifying links, and attaching events
// href - The URL of the age that was loaded that triggered the handler callback
// target = left or right (must be ID, as # will be appended
var handler = function (data, href, target) {
// Insert data into div
$( '#' + target ).html(data);
// Convert relative URLs in #right to include directory
var base_path = URI(href).directory();
$('#right a:uri(is: relative)').attr('href', base_path+'/'+$(this).href);
};
这成功找到并添加了 base_path(它从传递给函数的 href 变量获取它),但我不知道如何在其中获取原始文件名和查询字符串。我没有定义...所以我显然不理解“$(this)”或 .href。我尝试了一些其他选项来获取这些数据,但它们要么导致错误,要么导致未定义的值……再次表明我不知道自己在做什么。谷歌搜索“这个”很难。
我也试过使用 $(this).attr('href'),但结果是一样的......未定义。
简而言之:当我更新 URI attr 时,我如何找出 attr 更新中最初选择的 href 并将其放入新 URI?
注意我正在使用 jQuery 和这个 jQuery URI 库:http://medialize.github.io/URI.js/jquery-uri-plugin.html
最佳答案
好的,我通过更多的谷歌搜索找到了答案。适用于我需要的功能是:
var handler = function (data, href, target) {
// Insert data into div
$( '#' + target ).html(data);
console.log("href = ", href);
// Convert relative URLs in #right to include directory
var base_path = URI(href).directory();
//var base_path = uri.directory() + '/';
console.log(base_path);
$('#right a:uri(is: relative)').each(function() {
var cur_href = $(this).attr("href");
$(this).attr("href", base_path+"/"+cur_href);
});
};
更改是使用 .each 以允许匿名函数在每个相关链接上完成工作。
关于javascript - 如何使用 jQuery URI 更新具有完整目录路径的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434905/