Jquery 我疯了吗?click()不';好像不行

Jquery 我疯了吗?click()不';好像不行,jquery,click,Jquery,Click,下面的代码在任何浏览器上都不起作用。它应该显示一个警报框。我做错了什么 <html> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script> <script type="text/javascript"> $('#prevlink').click(function () { alert(

下面的代码在任何浏览器上都不起作用。它应该显示一个警报框。我做错了什么

 <html>
 <head>
 <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
 <script type="text/javascript">
$('#prevlink').click(function () { 
  alert("Test"); 
});  
</script>
</head>
<body>
<a id="prevlink" href="#">test</a>
</body>
</html>

$('#prevlink')。单击(函数(){
警报(“测试”);
});  

您没有将函数包装在一个容器中。它在DOM存在之前运行。

将其放入document.ready

将代码更改为:

$(function()
{
  $('#prevlink').click(function () { 
    alert("Test"); 
  });
});

因为javascript代码是在html完成下载之前执行的 将其用作您的代码

$(document).ready(function(){
$('#prevlink').click(function(){
  alert("Test");
});
})

您试图在元素存在之前访问它(JavaScript与HTML解析/呈现内联运行)。您可以使用jQuery提供的事件,正如Pekka和Mike指出的那样,也可以确保在元素存在后尝试访问该元素:

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
</head>
<body>
<a id="prevlink" href="#">test</a>
<script type="text/javascript">
// By this time we get here, it exists.
$('#prevlink').click(function () { 
    alert("Test"); 
});  
</script>
</body>
</html>

//我们到这里的时候,它已经存在了。
$('#prevlink')。单击(函数(){
警报(“测试”);
});  
前者(使用
ready
事件或类似事件)更“低调”,这在与大型团队打交道时非常有用,因为您的HTML设计师和JavaScript程序员通常是不同的人。后者发生得更快(链接出现后和挂接click事件前的时间间隔不小),挂接元素处理程序也是如此


即使在使用第二种方法时,您也可以通过确保
脚本
标记只是一个设置元素的调用,并且没有自己的实际逻辑,从而合理地将JavaScript和HTML分开。

这将是一个很好的技术面试问题-“这段代码做什么?”@迈克:当我读到你评论的前半部分时,我忍不住笑了。“我疯了吗?”:D+1,尽管技术上的问题是OP是否疯了:Poh,如果不希望页面导航回自身,您可能希望从click()处理程序返回false。这是最好的答案。我有一个类似的问题,虽然上面的其他答案为我解决了这个问题,但直到你解释了,我才真正明白为什么。如果你在我的页面上提交一个链接或任何答案,我会给你我的绿色复选标记。谢谢