jQuery múltiples evento click

Estoy obligado a usar una secuencia de comandos de carga de un servidor externo.

Este script básicamente añade un elemento <div class="myClass"> y enlazar un click método.

La cosa es que, en el click la función asociada al elemento, tienen un return false declaración al final.

También tengo mi propio script y estoy tratando de agregar un click método para el mismo elemento mediante $(document).on('click', '.myClass', function() { ... })

Mi problema es que su evento se activa antes y el return false en su función no activa mi propia click método.

He intentado cargar mi script antes de la suya, pero que no soluciona el problema.
He leído acerca de desatar y, a continuación, volver a enlazar, pero no estoy seguro de que es una buena opción, ya que su código puede cambiar en cualquier momento.

Cualquier otra cosa que podría tratar?

  • también es una manera de pasar evento como argumento y el uso event.preventDefault() para la secuencia de comandos.
  • No estoy seguro de entender. Donde iba a pasar este evento?
  • podría intentar evento de espacio de nombres $(document).on('click.namespace', '.myClass', function() { ... })?
InformationsquelleAutor VVV | 2013-09-06

5 Kommentare

  1. 1

    El problema es que el evento de la delegación depende de la propagación de eventos, hasta el elemento que enlaza el controlador. Cuando su controlador devuelve false, que evita la aparición de burbujas.

    Tendrás que enlazar el controlador directamente a los elementos después de que se haya agregado:

    $(".myClass").click(function() { ... });
    • Esto funciona! Gracias. Yo estaba tratando de escribir menos código con el .en el método, pero parece que no puede. Gracias!
  2. 4

    Usted necesita para hacer su función de controlador de devolver false.. que el evento no se propagará.

    En su etiqueta html que usted tiene que escribir algo como:

    <button type="button" class="btn" onclick="myHandler(); return false;"></button>

    O si el uso de jQuery:

    $(".btn").on('click', function (event){ 
        //do stuff..
        return false;
    });
    • Aunque esto es cierto, esto no fue lo que yo pedí, pero gracias de todos modos.
  3. 0

    en su onLoad ¿por qué no agregar una nueva clase al miclase div y, a continuación, configurar un detector de eventos para la nueva clase.

    $(".myClass").addClass("myClass2");
    
    $(".myClass2").on('click', function() { ... })
  4. 0

    Tuve el mismo problema hace poco. Como me fijo es, he añadido otra clase sobre ese elemento:

    $(document).load(function() {
        $(".myClass").addClass("myNewClass");
    });

    y que se unen los eventos de clic para que la clase así:

    $(document).on("click", ".myNewClass", function () { ... }); 

    Esto funcionó para mí, ya que sobrescribió la myClass clase con el myNewClass evento click.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea