Javascript JQuery函数在移动到js文件时停止工作

Javascript JQuery函数在移动到js文件时停止工作,javascript,jquery,Javascript,Jquery,我一直在开发我的脚本,现在想开始将它们移动到js文件中。但是,我移动的第一个脚本将无法从js文件中工作 function listEvents(url, phash) { var hashlocation = phash.split('#')[1]; if (hashlocation === undefined) { var page = ''; } else { var page = hashlocation; } $('

我一直在开发我的脚本,现在想开始将它们移动到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);
});
$(窗口).load(函数(){
listEvents('ajax/events_ajax/',window.location.hash);
});

js文件在任何人请求之前加载到头部的jquery库之后。我已清除缓存,将cloudflare置于开发模式等,如果在浏览器中加载JS文件,我将看到我的功能。我在控制台中没有看到任何错误。我遗漏了什么?

我想您需要将代码放入
。ready
函数:

$(document).ready(function() {
   $(window).load(function() {
      listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);
   });
});
$(文档).ready(函数(){
$(窗口)。加载(函数(){
listEvents('ajax/events_ajax/',window.location.hash);
});
});

说明: 问题是,当您启动代码时,内容尚未完全加载,在您的情况下,我认为这是
#events
。它还不在上,因此被jQuery忽略。如果在HTML文件中运行它,最像是将代码放在
(或任何容器)下面,因为它是在之后执行的,所以找到了该元素,代码按预期方式运行

阅读更多关于

  • .ready()
    函数:指定当完全加载时要执行的函数

我想您需要将您的代码放入
。ready
功能:

$(document).ready(function() {
   $(window).load(function() {
      listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);
   });
});
$(文档).ready(函数(){
$(窗口)。加载(函数(){
listEvents('ajax/events_ajax/',window.location.hash);
});
});

说明: 问题是,当您启动代码时,内容尚未完全加载,在您的情况下,我认为这是
#events
。它还不在上,因此被jQuery忽略。如果在HTML文件中运行它,最像是将代码放在
(或任何容器)下面,因为它是在之后执行的,所以找到了该元素,代码按预期方式运行

阅读更多关于

  • .ready()
    函数:指定当完全加载时要执行的函数

我猜是您的嵌入式PHP

listEvents('ajax/events\u ajax/',window.location.hash);
检查浏览器开发工具中的网络面板,而不仅仅是控制台。看看你有没有看到404


如果您使用的是内联脚本,它们是PHP,但是在移动到
.js
文件后,这些文件不再由PHP处理。

我猜是您的嵌入式PHP

listEvents('ajax/events\u ajax/',window.location.hash);
检查浏览器开发工具中的网络面板,而不仅仅是控制台。看看你有没有看到404


如果您使用的是内联脚本,它们是PHP,但在移动到
.js
文件后,这些文件不再由PHP处理。

是的,这是问题所在,但它是内联工作的,因此您能否解释为什么必须将其包装在“$(document).ready(function(){};”中使其从外部文件工作,以便我将来能够理解这一点。谢谢。@IliaRostovtsev为什么不干脆去掉
$(窗口)。加载
以支持
$(文档)。准备好了吗?
?谢谢Ilia的解释。@zamnuts还有很多其他方法可以达到预期的效果!是的,这就是问题所在,但它是内联工作的,所以您能解释一下为什么它必须包装在“$(document).ready(function(){});”中吗使其从外部文件工作,以便我将来能够理解这一点。谢谢。@IliaRostovtsev为什么不干脆去掉
$(窗口)。加载
以支持
$(文档)。准备好了吗?
?谢谢Ilia的解释。@zamnuts还有很多其他方法可以达到预期的效果!不,php不在js文件中。它在页面文件中。@Ally,哦,是的,在你的帖子“从页面调用”中遗漏了这个细节,就像这样“不,php不在js文件中。它在页面文件中。@Ally,哦,是的,在你的帖子“像这样从页面调用”中错过了那个细节