Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 5.121 pregleda

Najnovija ↓

Dupli jQuery selektor 13.05.2016. u 08:39 · pre 127 meseci #1
IDE ni stalno izbacuje upozorenje kako na jednom mestu u kodu koristim dupli selektor i to me mnogo nervira. Moram to nekako da rešim ili da isključim taj vorning!

Dakle kod je sledeći:

Code:

var element = jQuery("a[id="+obj_id+"]").parent().detach();
            for (var i = 0; i < spisak_kategorija.length; i++) {
                if(jQuery("#"+spisak_kategorija[i]+" > ul").length == 0) {
                    jQuery("#"+spisak_kategorija[i]).append("<ul></ul>");
                }
                jQuery("#"+spisak_kategorija[i]+" > ul").append(element[0].outerHTML);
            }



Tu može da se vidi da se
Code:
jQuery("#"+spisak_kategorija[i]+" > ul")

zaista ponavlja dva puta.


U pitanju je treeview sa gomilom <ul> i <li> elemenata i ovo je momenat kad se neki <li> element mišem prevuče na drugu lokaciju. U tom slučaju moram prvo da proverim da li na toj novoj lokaciji postoje <ul> elementi pa da ih otvorim ako ih nema. Stvar malo komplikuje što tih "kategorija" može biti više od jedne ali to nije bitno za priču. Dakle ovaj kod radi, i to radi odlično, samo me nervira taj vorning.

Probao sam ovako i neće da radi, ne znam što:

Code:

var element = jQuery("a[id="+obj_id+"]").parent().detach();
            for (var i = 0; i < spisak_kategorija.length; i++) {
                var target = jQuery("#"+spisak_kategorija[i]+" > ul");
                if(target.length == 0) {
                    jQuery("#"+spisak_kategorija[i]).append("<ul></ul>");
                }
                target.append(element[0].outerHTML);
            }

Re: Dupli jQuery selektor 13.05.2016. u 09:15 · pre 127 meseci
izmenjeno 1 put, poslednji put dusans 13.05.2016. u 09:29
  1. dusans13.05.2016. u 09:29zapis iz teksta poruke
#2
Code (javascript):

var element = jQuery("a[id="+obj_id+"]").parent().detach();
for (var i = 0; i < spisak_kategorija.length; i++) {
    var target = jQuery("#" + spisak_kategorija[i]);
    if(target.find("> ul").length == 0) target.append("<ul></ul>");
    target.find("> ul").append(element[0].outerHTML);
}
 


Ono što si probao neće da radi zato što jQuery matchuje elemente samo u trenutku poziva a ne i posle toga.
Dakle, ako je target.length == 0 to znači da nema ul-a. Bez obzira što ga kasnije dodaš, target to ne vidi dok ne selektuješ opet.
Inače warning je u većini slučajeva na mestu, međutim u ovakvom scenariju nije pošto svakako moraš dva puta da uradiš select.
Re: Dupli jQuery selektor 15.05.2016. u 11:27 · pre 127 meseci #3
Uspeo sam! Ovaj jQuery ima mnogo fora, našao sam kako da dodam selektor na selektor i sad nemam warning...

Code:

var element = jQuery("a[id="+obj_id+"]").parent().detach();
for (var i = 0; i < spisak_kategorija.length; i++) {
    var target = jQuery("#"+spisak_kategorija[i]);
    if(jQuery(">ul",target).length == 0) {
        target.append("<ul'></ul>");
    }
    jQuery(">ul",target).append(element[0].outerHTML);
}
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme