Jquery相对路径和绝对路径

7

我需要在jQuery中确定这个路径,实际上我有一个名为functions.js的文件,里面有一个用jQuery加载url的函数。

问题是js在网站的索引中加载,而文件实际上在子文件夹中。

<script src="http://www.domain.com/wp-content/includes/themes/mytheme/js/functions.js"></script>

网站首页调用的js文件位于 wp-content/includes/themes/mytheme/js 目录下。

加载jquery的调用方式是:wp-content/includes/themes/mytheme/index_loader.php。

我可以在jquery中使用绝对路径来指定 index_loader.php 的位置,但我的问题是是否可能不使用绝对路径,在js文件中计算路径。

实际上:

$("#test").load("http://www.domain.com/wp-content/includes/mytheme/index_loader.php");

这个问题是关于在jquery文件中实现计算的,我尝试过但没有成功。
$("#test").load("../index_loader.php");

这是我的真正问题,谢谢。

你能否重新措辞你的问题? - kennypu
2个回答

6
JavaScript的工作方式是从它被调用的文件中加载,并不会从它所编写的文件中加载。
为了做你需要的事情,你需要提供相对于当前页面的路径。
例如:
如果当前页面是http://www.domain.com,那么你需要做的是:
$("#test").load("wp-content/includes/mytheme/index_loader.php");

如果当前页面是http://www.domain.com/wp-content/index.php,那么您需要执行以下操作:
$("#test").load("includes/mytheme/index_loader.php");

作为一种附带说明,CSS的相对路径与其他方式不同,在CSS中,相对路径是基于所写文件的。

2
这很晚了,但是我使用了这种方法,并在此添加它,以防未来有人需要:
当尝试从不同的URL(站点的不同部分)中存在的页面使用相同的加载语句时,我遇到了这个问题。
您可以使用location JS变量。
location返回当前路径。例如:
wwww.blog.mysite.com/posts/postn25/comment64
location.origin返回域和主机(因此是站点的根)。对于上述URL,应该是:
wwww.blog.mysite.com/posts/postn25/comment64
所以当你这样做时:
$('#my_tag').load(`${location.origin}/mypath/mypage`)

无论域名如何变化,它都会始终从根目录开始查找/mypath/mypage,因此仍然可以正常工作。

PS:(不相关的内容) 我今天发现您可以使用 > * 在另一个标记中加载所有内容,例如:

$('#my_tag').load(`${location.origin}/mypath/mypage #my_tag > *`)

将在/mypath/mypage中存在的#my_tag的所有HTML加载到当前页面中的#my_tag。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接