2010-03-05 54 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