2010-03-05 18 views
7

Arbeits Ich kann ein jquery Event zu diesem Element wie binden:jQuery Event-Handler nicht

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

Es als

erwartet funktioniert, aber wenn ich tun:

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

es funktioniert nicht. Weiß jemand warum? Was vermisse ich?

Antwort

7

Sie tun müssen:

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

Die Form nicht bereit sein kann gebunden zu sein, wenn Sie anrufen, damit Sie es wickeln müssen auszuführen und den Handler rig, wenn das Dokument fertig gestellt ist .

+1

+1, aber warum Gebrauch $ (function() {}) statt $ (document) .ready()? Die erste liest nicht gut, während die zweite ist viel klarer (IMHO) – Matt

+0

@Matt - Nur meine Angewohnheit für die Kürze, da ich es wahrscheinlich 50 Mal pro Tag eingeben nehme ich an, was auch immer Sie bevorzugen, wird nur gut funktionieren, aber ... was auch immer schwimmt dein Boot. –

+0

@Matt sie sind eigentlich anders, wenn ich mich nicht irre, aber leicht, und ich kann mich nicht erinnern, wie. Ich denke jedoch, dass $ (function() {}) irgendwie besser ist. – Seaux

1

$.ready(), falls verwendet, sollte auf dem Dokument verwendet werden, um anzuzeigen, dass das DOM vollständig geladen wurde.

$(document).ready(function(){ 

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

});​ 

Online Demo: http://jsbin.com/ojaqo3/edit