como dice el titulo estoy tratando de desactivar OnClick específicos

<div id="test" style="display: block; opacity: 0.89;"></div>

este div cargado de script externo que está ofuscado por lo que no puedo ver el código específico.

Lo que he tratado de eliminar este

$("#test").click(function(){ return false});
$("#test").unbind();
$("#test").removeAttr("onclick");
//Suggestions which do not work
$('#test').on('click', function(e) {e.preventDefault();return false;});
$("#test").click(function(event){
event.preventDefault();
});

Ninguno de los trabajos mencionados.

EDIT: Solucionado mi problema de usar .unbind(«clic»); después de que el div se creó.

  • un div no tiene ningún comportamiento predeterminado para onclick, así que ¿qué estás tratando de evitar? Hay más código, tal vez?
  • Es el único elemento de la página con ese id? Y están tratando de que el anterior código jQuery después de que el elemento se agrega a la página?
  • Gracias nnnnnn, el problema era que yo estaba usando mi código antes de la etiqueta div en que fue creado, ahora he añadido .unbind(«clic»); después de su cargado y funciona bien 🙂
  • Fresco. Desde que trabajó lo he añadido como una respuesta.
InformationsquelleAutor user2534466 | 2013-10-11

7 Comentarios

  1. 12

    Puede agregar off("click");

    El violín

    $(function () {
        $("#test").click(function(){alert('test');});
        $("#test").off('click');
    
    });

    este código va a demostrar la eliminación de un agregado previamente evento click.

    • hay una ‘on’ equivalente a ‘off’. En que usted lo desea, puede volver a habilitar un evento click, que se han girado «off».
  2. 8

    Forma Simple, la combinación de jquery con javascript.

    //To disable:    
    
    $('#test').each(function (){
        this.style.pointerEvents = 'none'; 
    }); 
    
    //To re-enable:
    $('#test').each(function (){
        this.style.pointerEvents = 'auto'; 
    }); 

    Así, puede cambiar la selección de múltiples etiquetas

    • no esta solución desactivar el desplazamiento del mouse sobre el elemento?
    • Parece que la única solución mantener viejo onclick contenido, por lo que no es necesario que lo repita de nuevo!
  3. 6

    Ninguna de las opciones que he probado funcionaría si se usa antes de la div se ha añadido a la página. Así que asegúrese de poner su código en un lugar tras otro script que crea la div.

    Si más de un elemento tenía el mismo id que también sería un problema.

    Con respecto a los métodos individuales que he probado:

    $("#test").click(function(){ return false});
    $("#test").unbind();
    $("#test").removeAttr("onclick");

    La primera línea de agregar un nueva controlador haga clic en el elemento que impide que el comportamiento por defecto y se detiene el caso de la propagación de arriba, pero no se detendrá a otros controladores de eventos vinculados al elemento de funcionamiento – especialmente si se ejecutan antes de que su nuevo controlador, obviamente.

    La segunda línea va a quitar los controladores de eventos que se adjunta con jQuery, pero no controladores conectados por otros medios.

    La tercera línea debe trabajar para eliminar una línea de onclick atributo, si es que existe, pero no de los controladores de agregado con jQuery.

    Suponiendo que aún no se puede detener el comportamiento de clics incluso después de asegurarse de que su código se ejecuta después de que el div se agrega a la página, usted podría intentar algo como lo siguiente:

    var $test = $("#test").removeAttr("onclick"),
        $contents = $test.contents().detach();
    $test.replaceWith($test.clone(false).append($contents));

    Demo: http://jsfiddle.net/A9tmu/3/

    La idea no es reemplazar el elemento con un clon de sí mismo, porque el clonado versión (cuando se crea con .clone(false)) no se conservan los controladores de eventos. Yo soy la separación temporal de los divs contenido antes de la clonación, de modo que cualquier niño de los elementos llegar a mantener sus controladores de eventos.

    • Cómo se habilita ellos después de la inhabilitación?
    • re-habilitación de un clic en el controlador de un script externo es aún más complicado caso de uso que tratar de desactivarlo en el primer lugar. Usted no puede ser capaz de si usted no sabe cómo el original fue obligado. Si se trataba de un onclick usted podría ahorrar una referencia a la original antes de quitarla. Si el original utiliza addEventListener() no creo que usted puede obtener una referencia a la existente controlador.
  4. 0
    $('#test').on('click', function(e) {e.preventDefault();return false;});
    • Asegúrese de incluir el código de arriba DESPUÉS de <div id=»prueba»/> se incluye en DOM. De lo contrario, utilice esto: $(document).on(‘click’, ‘#test’, function(e) {e.preventDefault();return false;});
  5. 0

    intente esto:

    $("#test").click(function(event) {
        event.preventDefault();
    });
    • ¿Por que tendría que trabajar cuando return false; no?
    • return false; va a trabajar con javascript simple <a href="http://websiteURL/" onclick="javascript:return false;">TEST</a>
    • return false también obras de jQuery controladores de eventos, como se explica en la documentación.

Dejar respuesta

Please enter your comment!
Please enter your name here