我一直在开发我的脚本,现在想开始将它们移动到js文件中。但是,我正在移动的第一个脚本将无法使用js文件。
function listEvents(url, phash) {
var hashlocation = phash.split('#')[1];
if (hashlocation === undefined) {
var page = '';
} else {
var page = hashlocation;
}
$('#events').empty().load(url + page);
}
从这样的页面调用;
$(window).load(function() {
listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);
});
在任何人询问之前,js文件在头部的jquery库之后加载。我已经清除了缓存,将cloudflare置于开发模式等,如果我在浏览器中加载JS文件,我会看到我的功能。我没有在控制台中看到任何错误。我错过了什么?
答案 0 :(得分:1)
我想您需要将代码放入.ready
函数:
$(document).ready(function() {
$(window).load(function() {
listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);
});
});
问题在于,当您解雇代码时,内容尚未完全加载,在您的情况下,我认为是#events
。它不在 DOM 上,因此被jQuery忽略了。如果你在你的HTML文件中运行它,大多数情况下你将你的代码放在<div id="events"></div>
下(或者你的容器是什么)并且因为它之后被执行了,那么找到了那个元素并且你的代码是预期的! / p>
.ready()
function:指定 DOM 完全加载时要执行的功能。答案 1 :(得分:0)
我的猜测是你的嵌入式PHP <? echo base_url(); ?>
:
listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);
在浏览器的开发工具中检查网络面板,而不仅仅是控制台。看看你是否看到任何404。
如果您使用内联脚本,那些是PHP,但在转移到.js
文件后,PHP不再处理这些文件。