Javascript 为什么不触发事件(jquery)
我有一个主页,有两个按钮(每个按钮指的是另一个页面): A和B(HTMLs和JSs)具有相同的行为: 例如(B.html和B.js):Javascript 为什么不触发事件(jquery),javascript,jquery,Javascript,Jquery,我有一个主页,有两个按钮(每个按钮指的是另一个页面): A和B(HTMLs和JSs)具有相同的行为: 例如(B.html和B.js): B B 返回 $(文档).ready(函数(){ log(“bjsready”); $(“#backButton”)。单击(函数(){ log(“单击后退按钮”); $.get(“/back.html”),函数(数据){ log(“获取结果”); 文件。写入(数据); }); }); }); 当我从主页点击A或B按钮进入新页面时, 我可以在控制台日志中看到A
B
B
返回
$(文档).ready(函数(){
log(“bjsready”);
$(“#backButton”)。单击(函数(){
log(“单击后退按钮”);
$.get(“/back.html”),函数(数据){
log(“获取结果”);
文件。写入(数据);
});
});
});
当我从主页点击A或B按钮进入新页面时,
我可以在控制台日志中看到A.js(或B.js)已准备就绪(因此A.js或B.js已加载),
但是在它之后,如果我单击“后退”按钮,什么也不会发生(甚至连console.log(“back button clicked”);
行也不会被调用
为什么会发生这种情况以及如何修复?您需要将脚本标记移动到html标记的末尾,以便在javascript调用之前呈现页面
<html>
<head>
<title>B</title>
</head>
<body>
B <button id="backButton">Back</button>
<script type="text/javascript" src="js/B.js"></script> //add script line here!
</body>
</html>
加载页面B时,您将看到按钮还不存在,因此脚本无法绑定单击事件。试试这种方法……对我有效……您需要在第二个页面中添加jquery.min.js库链接
<html>
<header>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> //add it
</script>
</header>
<body >
B
<button id="backButton">Back</button>
<script type="text/javascript" src="js/B.js"></script> // add the line here
</body>
</html>
//加上
B
返回
//在这里添加行
这没有帮助。我在控制台login.js上看到以下警告:14解析器阻塞,跨站点(即不同的eTLD+1)脚本,通过document.write调用。由于网络连接不良,浏览器可能会在本次或将来的页面加载中阻止对此脚本的网络请求。如果在此页面加载中被阻止,将在后续控制台消息中确认。有关详细信息,请参阅。出现此问题的原因是$(文档).ready在页面呈现之前激发,这可能是因为脚本认为页面已经准备好了,因为您刚刚用javascript更改了文档内容。为了更好地向您展示,我改进了答案。
<html>
<head>
<title>B</title>
<script type="text/javascript" src="js/B.js"></script>
</head>
<body>
B
<button id="backButton">Back</button>
</body>
</html>
$(document).ready(function(){
console.log("B js ready");
$("#backButton").click(function(){
console.log("back button clicked");
$.get( "/back.html", function( data ) {
console.log("get results");
document.write(data);
});
});
});
<html>
<head>
<title>B</title>
</head>
<body>
B <button id="backButton">Back</button>
<script type="text/javascript" src="js/B.js"></script> //add script line here!
</body>
</html>
$(document).ready(function() {
debugger; // Add debugger here!
console.log('B js ready');
$('#backButton').on('click', function() {
console.log('back button clicked');
$.get('/back.html', function(data) {
console.log('get results');
document.write(data);
});
});
});
<html>
<header>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> //add it
</script>
</header>
<body >
B
<button id="backButton">Back</button>
<script type="text/javascript" src="js/B.js"></script> // add the line here
</body>
</html>