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

时间:2013-10-13 12:36:54

标签: javascript jquery

我一直在开发我的脚本,现在想开始将它们移动到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文件,我会看到我的功能。我没有在控制台中看到任何错误。我错过了什么?

2 个答案:

答案 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>

详细了解jQuery .ready() function

  • .ready() function:指定 DOM 完全加载时要执行的功能。

答案 1 :(得分:0)

我的猜测是你的嵌入式PHP <? echo base_url(); ?>

listEvents('<? echo base_url(); ?>ajax/events_ajax/',window.location.hash);

在浏览器的开发工具中检查网络面板,而不仅仅是控制台。看看你是否看到任何404。

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