Saltar al contenido

Eliminar el evento keydown del elemento jquery no funciona

Solución:

.off (eventos [, selector ] [, handler ] ): versión agregada: 1.7

.unbind (eventType [, handler ] ): versión agregada: 1.0

El método .on () adjunta controladores de eventos al conjunto de elementos seleccionado actualmente en el objeto jQuery. A partir de jQuery 1.7, el método .on () proporciona todas las funciones necesarias para adjuntar controladores de eventos. Para obtener ayuda sobre la conversión de métodos de eventos jQuery más antiguos, consulte .bind (), .delegate () y .live (). Para eliminar eventos vinculados con .on (), consulte .off (). Para adjuntar un evento que se ejecuta solo una vez y luego se elimina solo, consulte .one ()

Entonces, sugiero prestar atención a la versión de jQuery, porque bind / unbind no se usan mucho más.

En el siguiente fragmento, puede ver que .off () funciona bien:

$( window ).load(function() {
  $("#element").keydown(function(e) {
    console.log('keydown event');
  });
  $("#elementOff").click(function() {
    // unbind keydown
    $("#element").off('keydown');
    
    // attach click
    $("#element").off('click').click(function(e) {
      console.log('click event');
    });
  });
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<form>
  <input id="element" type="text">
</form>
<button id="elementOff">Unbind Keydown and attach Click</button>

Como el .hacer clic() El método es solo una abreviatura de .sobre(“hacer clic“, manejador), es posible separarlos usando.apagado(“hacer clic“):

$("#element").off("click", function(){
    $("#element").hide(); //not working
});

$("#element2").on("click", function() {
    $("#element2").hide(); //working
});

Entonces, si tienes un .keydown(manejador), es un atajo para .sobre(“keydown“, handler) en la primera y segunda variaciones, y .trigger (” keydown “) en la tercera.

Los argumentos proporcionados deben coincidir para que se elimine el controlador de eventos.

Si no desea tocar la secuencia de comandos existente o se puede cambiar, le recomiendo que simplemente incluya una secuencia de comandos .js externa a la página html para desvincular los eventos:

<script src="https://foroayuda.es/your_external_script.js"></script>

con contenido similar:

$(document).ready(function(){
    $("#element2").unbind("click");
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *