Pregunta

Esto es probablemente sólo mi propia ignorancia de cómo los eventos de trabajo, pero ¿Puede alguien explicar esto:. Un evento personalizado no se disparará en la parte superior de una función, pero se disparará en una devolución de llamada dentro de esa función

Los siguientes obras (se activa el evento de encargo):

function foo() {

    $.ajax( ... , function() {
            $.event.trigger("custom" , data );
    });

}

foo();

La siguiente no funciona (el evento personalizado no se dispara):

function foo() {
    $.event.trigger("custom" , data );

    $.ajax( ... , function() {
            ...
    });

}

foo();

El evento de unión es como sigue:

$(document).bind("custom custom1 custom2" , function( event, data ) {
    ...
});

realmente lo quiero para disparar a la derecha en la parte superior de la función. Cualquier ayuda es muy apreciada!

NOTA:. Es el mismo problema en los navegadores, y con o sin el argumento adicional de los datos

¿Fue útil?

Solución

El hecho de que funciona en los me lleva asíncrono de devolución de llamada para creer que cuando foo (); se llama, la unión real no ha tenido lugar. Es necesario tener cuidado con el orden de las cosas cuando se hace esto.

La respuesta de jwwishart probablemente funciona porque está uniéndose primero ... luego llamar foo. En caso de publicar todo el código con el fin de que las cosas suceden aunque podría ser más fácil de depurar.

Otros consejos

data parece estar sin definir en su segundo método (no de trabajo).

Cuando defino data, funciona como se esperaba.

Las siguientes obras ...?

Sólo el obligado "a medida", incluso, le quité los otros dos (para hacer las cosas lo más simple posible.)

$(document).bind("custom" , function( event, data ) {
    alert(data);
});


function foo() {
    $.event.trigger("custom" , "Works" );
}

foo();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top