如果我在这里愚蠢,请随意大肆虐待我,但我感到困惑。似乎一切都应该正常工作:/我已经三重检查文件位置,一切都很好
我头脑中有这个:
<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的某个地方存在问题...但我无法在这里找到最新消息
答案 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;
});