2010-03-05 12 views
7

puedo enlazar un evento jQuery a este elemento como:jQuery controlador de eventos que no trabaja

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

Funciona como se esperaba

pero si lo hago:

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

no funciona. ¿Alguien sabe por qué? ¿Qué me estoy perdiendo?

Respuesta

7

que tiene que hacer:

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

La forma puede no estar listo para obligarse a cuando se está llamando, por lo que necesita para envolverlo para ejecutar y armar el controlador cuando el documento está listo .

+1

1, pero ¿por qué el uso $ (function() {}) en lugar de $ ready (documento)()? El primero no lee bien, mientras que el segundo es mucho más claro (en mi humilde opinión) – Matt

+0

@Matt - Es mi hábito por brevedad ya que lo escribo probablemente 50 veces al día, supongo, lo que prefiera funcionará bien sin embargo ... lo que sea flota tu bote –

+0

@Matt en realidad son diferentes, si no me equivoco, pero un poco, y no recuerdo cómo. Creo, sin embargo, que $ (function() {}) es de alguna manera mejor. – Seaux

1

$.ready(), si se utiliza, debe ser utilizado en el documento para indicar el DOM ha sido completamente cargado.

$(document).ready(function(){ 

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

});​ 

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

Cuestiones relacionadas