我正在尝试使用jQuery的.load
函数将div元素从一个页面加载到另一个页面。但它使整个脚本只运行一次。
我在这里看到了一些类似的问题,但这些似乎都不适合我的问题。我尝试过将.click
改为.one
以及添加new Date().getTime()
和$.ajaxSetup({cache: false})
以防止兑现等事情。没有这些工作。
我不确定问题是什么,但它似乎只有在我使用.load
函数时才会发生。我在下面附上了我的script.js
文件的简化版本:
的script.js
$(function() {
$("a").click(function(e) {
var url = $(this).attr("href");
$("body").load(url + " .container");
e.preventDefault();
});
});
的index.html
<!DOCTYPE html>
<html>
<head>
<title>Index page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div class="container">
<h2>This is the index page</h2>
<a href="index.html">Index page</a>
<br>
<a href="second.html">Second page</a>
</div>
<script src="script.js"></script>
</body>
</html>
second.html
看起来与index.html
文件非常相似。
你的事件处理程序只绑定到第一页上的锚点,我会使用事件委托,这样每次加载新页面时我都不必绑定处理程序。
$(document).on('click', 'a', function(e){
var url = $(this).attr("href");
$("body").load(url + " .container");
e.preventDefault();
});
我有同样的问题。我在load()
之后再次调用Javascript解决了这个问题。这是片段
$.getScript('<your script>');