[ S A J A @ 13.05.2016. 07:39 ] @
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);
            }

[ dusans @ 13.05.2016. 08:15 ] @
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.

[Ovu poruku je menjao dusans dana 13.05.2016. u 09:29 GMT+1]
[ S A J A @ 15.05.2016. 10:27 ] @
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);
}