JQUERY eseménykezelők kiiktatása, ”kikapcsolása”
2019-08-31T20:43:35+02:00
2019-09-04T17:39:20+02:00
2022-08-11T14:40:30+02:00
Valaki88
Sziasztok!

Van négy különböző eseménykezelőre írt kódom, amit $(document).ready()-ben hívok meg.
$(document).ready( function(){ var j,k,g,c; // 1. $(document).on("click","#bezar",function(i){ if(void 0===i.originalEvent){ return alert(" STOP . . . "),!1 } }), // 2. $(document).on("click","#keresett_elem > img",function(i){ if(void 0===i.originalEvent){ return alert(" S T O P . . ."),!1 } if("true"===$("#keresett_elem").attr("data-recaptcha")){ // STOP . . . } else{ var a={eventid:$("#keresett_elem").attr("data-info"), userid:$("#confg").attr("data-id")}; f.send(JSON.stringify(a)) } }), // 3. $(document).on("click",".egyeb",function(m){ if(void 0===m.originalEvent){ // STOP . . . } var l=null; if("undefined"==typeof $("text").val()){ // STOP . . . } l=$("text").val(); var i={recaptcha:l, eventid:$("#keresett_elem").attr("data-info"), userid:$("#confg").attr("data-id") }; f.send(JSON.stringify(i)) }), // 4. $(document).on("delete.modul",function(){ k.remove() }); } );
(A kódban a "// STOP . . ." helyett egyéb kódrészlet van, az most lényegtelen!)

Ezekre az esetekre szeretnék egy olyan megoldást találni, amivel ki tudom iktatni mind a négy eseménykezelőt (mind a négy event-et)!
És mindezt userscript-ben szeretném, tehát mondjuk a Firefoxban használt Greasemonkey böngésző kiegészítőben szeretném futtatni.

Hogyan lehetne a fenti kódban szereplő 4 egymástól független jQuerry event-et inaktívvá tenni, kikapcsolni (native) JavaScript-el, userscript-ként (Greasemonkey-ben) futtatva?

Kérlek szépen Benneteket, aki tudna ebben nekem segíteni, az írjon ötleteket erre vonatkozóan!

Nagyon szépen köszönöm!
Mutasd a teljes hozzászólást!
Hali!

Kérlek, mutasd meg, hogy az alábbi - első - esetben, hogyan használjam az .off()-t!?

Szerintem a dokumentáció világosan, példákkal együtt leírja, de legyen. 

Az első példádból kiindulva, a használat a következő (lehet):
$(document).off('click', '#bezar');
De! Ezzel minden click-eseménykezelőt lekapcsolsz az adott szelektor által meghatározott elem(ek)ről. Ha csak a saját eseménykezelődet szeretnéd tiltani, akkor úgy járhatsz el a legegyszerűbben, hogy nem lambda-/anonym-függvényt adsz meg az eseménykezelő kapcsolásakor, hanem „kiszervezed” azt egy deklarált, nevesített függvénybe és annak a nevét adod meg. Így ugyanezzel a névvel tudod lekapcsolni is az eseménykezelőt az elem(ek)ről. Tehát, valahogy így kapcsold:
function bezarClickHandler(event) { // Ide kerül az a kódrészlet, ami eredetileg az eseménykezelődben volt } … $(function() { … // 1. $(document).on('click', '#bezar', bezarClickHandler); … });
És így tudod ezek után lekapcsolni:
$(document).off('click', '#bezar', bezarClickHandler);
Mutasd a teljes hozzászólást!

  • Van valakinek ötlete a fenti kódban lévő 4 eset inaktívvá tételéhez?
    Mutasd a teljes hozzászólást!
  • Hali!

    Hogyan lehetne a fenti kódban szereplő 4 egymástól független jQuerry event-et inaktívvá tenni, kikapcsolni (native) JavaScript-el, userscript-ként (Greasemonkey-ben) futtatva?

    Miért akarod natív JS-tel? Használhatsz jQuery-t a userscript-edben: @require. És innentől kezdve pedig: .off().

    Mutasd a teljes hozzászólást!
  • Miért akarod natív JS-tel?

    Azért mert a jQuery-hez kevésbé értek, jobban átlátom a natív JS-t.

    Használhatsz jQuery-t a userscript-edben: @require. És innentől kezdve pedig: .off().

    Rendben, akkor megpróbálom így!
    Kérlek, mutasd meg, hogy az alábbi - első - esetben, hogyan használjam az .off()-t!?
    Aztán abból kiindulva megpróbálom a többit is.
    // 1. $(document).on("click","#bezar",function(i){ if(void 0===i.originalEvent){ return alert(" STOP . . . "),!1 }
    Köszönöm.
    Mutasd a teljes hozzászólást!
  • Hali!

    Kérlek, mutasd meg, hogy az alábbi - első - esetben, hogyan használjam az .off()-t!?

    Szerintem a dokumentáció világosan, példákkal együtt leírja, de legyen. 

    Az első példádból kiindulva, a használat a következő (lehet):
    $(document).off('click', '#bezar');
    De! Ezzel minden click-eseménykezelőt lekapcsolsz az adott szelektor által meghatározott elem(ek)ről. Ha csak a saját eseménykezelődet szeretnéd tiltani, akkor úgy járhatsz el a legegyszerűbben, hogy nem lambda-/anonym-függvényt adsz meg az eseménykezelő kapcsolásakor, hanem „kiszervezed” azt egy deklarált, nevesített függvénybe és annak a nevét adod meg. Így ugyanezzel a névvel tudod lekapcsolni is az eseménykezelőt az elem(ek)ről. Tehát, valahogy így kapcsold:
    function bezarClickHandler(event) { // Ide kerül az a kódrészlet, ami eredetileg az eseménykezelődben volt } … $(function() { … // 1. $(document).on('click', '#bezar', bezarClickHandler); … });
    És így tudod ezek után lekapcsolni:
    $(document).off('click', '#bezar', bezarClickHandler);
    Mutasd a teljes hozzászólást!
  • Köszönöm szépen!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd