Autor Zpráva
nethor
Profil
<script>
function Listen(){                            
    $("body").off("change", "textarea, input")    ;
//     $("body").off("change", "input, textarea")    ;                                                                
    $("body").on("change",     "input, textarea", function() {  
        console.log("Listen -> change")    ;     
    });
}
Listen() ;
Listen() ;    
</script>
Zdravím, prosím nevíte proč musí být zápis selektorů v off() a on() nachlup stejný? Třeba při změně pořadí "input, textarea" > "textarea, input" se log vypíše 2x.
Kajman
Profil
Ta událost je na body. Tipuji, že ten další selektor je uložený jen jako řetězcový atribut pro spuštění testu delegování až při události.

V dokumentaci píší, že při off musí být selektor stejný.

Spíše pozor, že to off může vypnout jinou událost na body se stejným selektorem, než který se pak nahazuje. To lze ošetřit pojmenováním nynější anonymní funkce mimo Listen a použít ji i v off, nebo třeba tou vlastností, že ten selektor musí být naprosto stejný a dát si tam nějaký nepoužitý identifikátor navíc (textarea, input, #eventFromListen385). Slektor je samozřejmě dobré mít v proměnné, ať se mění jen na jednom místě a nezačne to takto blnout až po úpravě kódu bez opravy ve druhém výskytu.
nethor
Profil
Kajman
Ten kód je pro ukázku hodně zjednodušený, do Listen() v reálu předávám parametr, který řeší i konkrétní selectory.
Jen jsem se s tím dlouho trápil, než jsem přišel na to, proč off() událost stále nevypíná. V definici více selektorů api.jquery.com/multiple-selector na pořadí nezáleží. Stejný řetězec mě nenapadl, ale vysvětluje problém. Díky.
Kajman
Profil
Ale to je jiná metoda než off. Tam se parametr chová jinak.

Také je v návodu na off popsáno, že při navěšení událostí je možné použít namespace.

$("body").on("change.mojenamespace",...);
a ten pak využít po zaměření navěšených událostí bez specifikace selektoru pro delegování (a zachování ostatních událostí na body).
$("body").off("change.mojenamespace");
nebo
$("body").off(".mojenamespace");
JsonKody
Profil
Vyvstava otazka jestli je dobry napad v roce 2023 pouzivat jQuery D:
JS uz je davno updatovanej a podporovanej vsude stejne.
Na aplikace mas preshsel frameworku jako React, Vue, Angular, Svelte, Solid atd. kde pracujes s deklarativnim kodem, takze nemusis resit neskutecne ojeby jako u jQuery kde si musis hlidat co kde je pouzito .. neustale.
Kcko
Profil
JsonKody:
Přijde Ti, že clověk co se ptá na elementární věci v Jquery, se snadno naučí Vue nebo React?
jQuery už dneska skomírá, nicméně na něm ještě dlouho poběží spoustu funkčních webů? A proč? protože ekonomické hledisko.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0