¿cuál es el equivalente de jQuery‘s trigger método sin jQuery?

por ejemplo, ¿cómo puedo hacer algo como $('.blah').trigger('click'); sin jQuery?

InformationsquelleAutor john | 2011-04-14

4 Comentarios

  1. 22

    Para un cierto valor de «muy mala calidad equivalente»:

    var button = document.getElementById("thebutton")
    button.click()

    No todos los navegadores (por ejemplo, Firefox!) permitir simulada de los acontecimientos de esta manera! El uso de onclick() sólo funciona si el evento es en línea, etc.

    Consulte la fuente de jQuery y la búsqueda para «trigger:» (primer partido) para ver todos los icky hecho cosas para «hacer que funcione» (un poco de buena es sólo fotográficos de todo el jQuery interna, otros marcos de hacer para tener mucho más simples ejemplos).

    Feliz codificación.

    • Un error en el código, debe ser getElementById (con un capital ‘B’).
    • Este no es el equivalente de jQuery .trigger(). ¿Qué acerca de otros eventos? por ejemplo,resize, scroll, hashchange. ¿Qué acerca de eventos personalizados? Esto ni siquiera el trabajo de cross-browser.
    • Esto es apoyado como de Firefox 5 de acuerdo a la MDN.
    • También debe señalarse que llamar a click() no ejecutar registrado detectores de eventos.
  2. 29

    evento.initMouseEvent(«haga clic en»…

    Aquí está un ejemplo:

    function simulateClick(elId) {
        var evt;
        var el = document.getElementById(elId);
        if (document.createEvent) {
            evt = document.createEvent("MouseEvents");
            evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        }
        (evt) ? el.dispatchEvent(evt) : (el.click && el.click());
    }
    
    var foo = document.getElementById("hey");
    
    foo.onclick = function () {alert("bar");}
    
    simulateClick("hey");
  3. 6

    en Javascript

    var event = document.createEvent("Event");
    event.initEvent("click", false, true); 
    document.getElementById("blah").dispatchEvent(event);

    es equivalente para jQuery gatillo de la siguiente

    $('#blah').trigger('click');
  4. 4

    Aquí está mi ejemplo. Funciona perfectamente en todas las situaciones

    var d=document.createEvent("MouseEvents"),
        c=document.createEvent("MouseEvents"),
        p=document.createEvent("MouseEvents");
        d.initMouseEvent("mousedown",true,true,window,0,0,0,0,0,false,false,false,false,0,null);
        c.initMouseEvent("click"    ,true,true,window,0,0,0,0,0,false,false,false,false,0,null);
        p.initMouseEvent("mouseup"  ,true,true,window,0,0,0,0,0,false,false,false,false,0,null);
    
        var element =//some selector;
    
        element.dispatchEvent(d);
        element.dispatchEvent(c);
        element.dispatchEvent(p);
    • initMouseEvent está ahora en desuso.

Dejar respuesta

Please enter your comment!
Please enter your name here