【发布时间】:2020-10-03 06:34:32
【问题描述】:
我想在单击 带有链接的锚 html 标记时更改 jquery 中变量的值,此标记也会加载新页面,但是当我单击该锚标记时会加载新页面,但是变量值没有改变。
我在网上查了一下,发现这是由于 jquery 的异步特性造成的。
这是我的代码:-
var req;
$(document).ready(function(){
$('header').load("navbar.html");
$('footer').load("footer.html");
$('#veg-caterer').click(function(){
req = "c1";
});
});
在上面的代码中,当我在更改 req
的值之前单击#veg-caterer 时会加载新的 html 页面
我正在使用警报检查其他页面上 req 的值,它显示未定义这里是代码:-
$(document).ready(function(){
alert(req);
});
我试过使用 URL get parameters , setTimeout 但我也面临同样的问题。我知道它的基本但我对 jquery 和 js 有点陌生。请解释你的答案
我的主要动机是在单击带有链接的锚标记时将值传递给其他 js 文件
【问题讨论】:
-
锚标签不加载新页面。他们滚动到现有页面中的位置。因此,也许您还有其他功能正在运行。关于您的变量更改,您可以尝试 onmousedown 而不是单击,以便它在完成单击之前执行。你可以做 event.stopPropagation() 或 event.preventDefault()
-
我正在做
<a id = "veg-caterer" href="all.html">这会加载新页面 -
其实你是对的。我站得更正了。它只是术语“锚”不经常使用,因此有时被认为是现有页面的锚。
-
我猜该变量仍然设置,但由于新页面加载它并不重要。离开页面时,所有变量都会被删除。您将需要使用查询参数或持久存储(cookies、sessionStorage...)。有关跨页面保存的更多详细信息,请参阅此问题:stackoverflow.com/questions/29986657/…
标签: javascript jquery ajax asynchronous-javascript