2010-03-05 103 views
7

我可以一个jQuery事件绑定到这样的元素:jQuery的事件处理程序不工作

<script type="text/javascript"> 
$('#new_key').ready(function() { 
alert('Handler for .submit() called.'); 
return false; 
}); 

它将按预期

,但如果我这样做:

<script type="text/javascript"> 
$('#new_key').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
}); 

它不工作。有人知道为什么吗?我错过了什么?

回答

7

你需要做的:

$(function() { //equal to $(document).ready() { 
    $('#new_key').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
    }); 
}); 

形式可能不是准备好进行绑定,当你打电话来,所以你需要用它来执行,并搭起了处理程序时该文件已准备就绪。

+1

+1,但为什么使用$(函数(){}),而不是$(文件)。就绪()?第一个阅读不好,第二个更清晰(恕我直言) – Matt 2010-03-05 21:50:50

+0

@Matt - 就我的习惯来说,因为我认为每天可能输入50次,不管你喜欢什么,它都能正常工作,不过......无论漂浮你的船。 – 2010-03-05 21:52:10

+0

@Matt他们实际上是不同的,如果我没有弄错,但是有点轻微,我不记得如何。我认为,$(function(){})在某种程度上更好。 – Seaux 2010-03-05 22:32:31

1

$.ready()如果使用,应该在文档上使用以指示DOM已经完全加载。

$(document).ready(function(){ 

    $("#new_key").submit(function(e){ 
    e.preventDefault(); 
    alert("Submit called!"); 
    }); 

});​ 

在线演示:http://jsbin.com/ojaqo3/edit