jQuery没有加载?

时间:2012-01-31 10:47:31

标签: jquery html

如果我在这里愚蠢,请随意大肆虐待我,但我感到困惑。似乎一切都应该正常工作:/我已经三重检查文件位置,一切都很好

我头脑中有这个:

<head>
<meta charset="utf-8">
<title>Website</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/functions.js"></script>
</head>

我有一个像这样的链接列表:

<ul class="menu">
   <li><a href="#">Link 1</a></li>
   <li><a href="#">Link 2</a></li>
   <li><a href="#">Link 3</a></li>
</ul>

在functions.js中我有这个......

console.log('WTF.. THIS LOGS IN THE CONSOLE!?!?!?!');

// debugging purposes
alert($('a').attr('href'));

$('.menu li a').click(function(e){
    alert('hey');
    e.preventDefault();
});

我收到一条警告说&#39; undefined&#39;当我点击链接时,会阻止默认操作,但我没有收到警报......

我得出的结论是jQuery的某个地方存在问题...但我无法在这里找到最新消息

6 个答案:

答案 0 :(得分:4)

$(function(){
    //....Your code of java script must be
});

试试这个,它会运行..

答案 1 :(得分:3)

您可能必须将您的代码包装在document.ready handler:

$(document).ready(function() {
    console.log('WTF.. THIS LOGS IN THE CONSOLE!?!?!?!');

    // debugging purposes
    alert($('a').attr('href'));

    $('.menu li a').click(function(e){
        alert('hey');
        e.preventDefault();
    });
});

请记住,Javascript会在页面中显示后立即执行,当您的脚本执行时,<a>元素尚不存在。使用“就绪”事件,可以确保在代码运行时DOM完全可用。

您还可以在</body>标记之前在body的末尾添加对functions.js文件的引用。

答案 2 :(得分:3)

您是否尝试将其全部包装在$(document).ready()中以确保dom已加载?

$(document).ready(function() {
    console.log('WTF.. THIS LOGS IN THE CONSOLE!?!?!?!');

    // debugging purposes
    alert($('a').attr('href'));

    $('.menu li a').click(function(e){
        alert('hey');
        e.preventDefault();
    });
});

这对你有用。 ($(document).ready(function() {});的快捷方式为$(function() {});

答案 3 :(得分:2)

如果您粘贴的代码是您的functions.js文件的确切内容,那么您将遇到问题。您的代码在文档准备好之前正在执行。将初始化代码放在functions.js中的函数中,然后在文档准备就绪时调用该函数:

$(document).ready(function() {
    // now call your init function
    myInitCode();
});

答案 4 :(得分:1)

您的脚本元素出现在头部,并且不会延迟执行代码(例如,将其放入函数并使用document.ready)。

您的链接显示在正文之后的正文中,因此代码运行时它们不存在。

答案 5 :(得分:-3)

您是否尝试在点击事件中返回false?喜欢以下?

$('.menu li a').click(function(e){
    alert('hey');
    e.preventDefault();
    return false;
});