Mám nejaký javascript, ktorý som zdedil za svojpráce. V tomto javascripte máme bočný panel, ktorý sa neustále aktualizuje (každých 1 - 10 minút). V skripte analyzujeme a spracovávame AJAX zo servera a potom nazývame zaujímavou funkciou.
function renewClicks(){
$(".classElem").unbind("click");
$(".classElem2").unbind("click");
$(".classElem3").unbind("click");
$(".classElem").click(elm1funct);
$(".classElem2").clikc(elm2funct);
$(".classElem3").click(elm3funct);
}
Kde .classElem je selektor triedy css, ktorý je pripojený ku každému obrázku, ktorý je pridaný na stránku. A elmfunct je funkcia, ktorá je napísaná na zvládnutie kliknutia. Spustí sa pri každej aktualizácii (odznačenie platných už pridaných prvkov a ich opätovné pridanie). Chcem vedieť, či existuje spôsob, ako by som mohol pripojiť poslucháča k prvku tela v DOM tak, aby všetky obrazové prvky pridané na stránku a ktoré zdedili triedu css už boli spracované, a preto nebudú neregistrované a znovu zaregistrované. registrované pri každej aktualizácii.
Ďakujeme vám za akékoľvek informácie, ktoré môžete poskytnúť.
odpovede:
8 pre odpoveď č. 1Môžete to vyskúšať:
$("body").on("click",".classElem",elm1funct)
.on("click",".classElem2",elm2funct)
.on("click",".classElem3", elm3funct);
Delegované udalosti majú tú výhodu, ktorú môžuspracovanie udalostí z potomkov, ktoré sú pridané do dokumentu neskôr. podľa vyberanie prvku, u ktorého je zaručené, že bude prítomný v čase Ak je pripojený delegovaný obslužný program udalostí, môžete naň delegované udalosti použiť vyhnúť sa nutnosti často pripájať a odstraňovať obsluhy udalostí.
7 pre odpoveď č. 2
Ako už bolo spomenuté @crush, použite prístup delegovaný na udalosti, aby ste sa vyhli nezáväzným a opätovným väzbám udalostí:
$(document).on("click", ".classElem", elm1funct);