2011-09-23 6 views
13

En muchos casos, debo vincular un comportamiento a un elemento después de la carga, y luego después de un evento desencadenante (como "cambiar"). Creo que la mejor forma sería la de hacerlo en la misma línea:Jquery: vincular carga + cambio simultáneamente

$('#element_id').bind('load, change', function() { 
... 
}); 

Pero esto sólo funciona para el "cambio" y no de "carga". ¿Hay una mejor manera?

+0

que eliminan la coma, pero no funciona de todos modos. Creo que habría algunas limitaciones con la carga – max

Respuesta

36

me encontré con el mismo problema. Extracción de coma no es suficiente, al menos no en este caso:

$(document).ready(function(){ 
    $('#element_id').bind('load change', function() { 
     ... // (this DOESN'T get called on page load) 
    }); 
}); 

supongo load eventos disparará antes $(document).ready().

Esta es una solución simple:

$(document).ready(function(){ 
    $('#element_id').bind('change', function() { 
     ... 
    }); 
    $('#element_id').trigger('change'); 
}); 
+0

Incluso esto repetirá el evento de cambio mil millones de veces. No tengo idea por qué. Intenté este método y otros, y sigue queriendo hacer bucles. –

+0

¿Está activando el evento dentro de la función? No debe repetirse, debe haber un error en alguna parte. Puede tratar de crear un caso de error mínimo y publicar el código en una pregunta separada; lo más probable es que lo descubras antes de presionar el botón "Publicar". :) – johndodo

+0

No lo activó dentro de la función. $ ('# employeeDropDown'). on ('change', function (event) { var form = $ (event.target) .parents ("form"); form.submit(); }). trigger ('cambio'); o incluso cuando lo pones arriba, hará que se repita. –

1

¿No solo necesita quitar la coma?

+0

Para agregar: http://api.jquery.com/bind/ –

4

Para el contenido que ya esté cargado, cuando se desea ejecutar una función en un evento y también de inmediato, puede utilizar un evento personalizado de su propia nomenclatura para evitar el desencadenamiento cualquier enlace existente de las bibliotecas, etc. en los eventos incorporados, por ej.

$(".my-selector").on("change rightnow", function() { 
    // do stuff... 
}).triggerHandler("rightnow"); 
Cuestiones relacionadas