2011-03-02 13 views
5

Bu DOM ağacım var düğümleri:nasıl bazı özel çocuk döngü

<li> 
data .... 
    <br> 
    data ... 
    <img ... /> 
    <br> 
    <script> ... </script> 
    <span> data ... </span> 
</li> 

nasıl ben li kendisi ve senaryo elemanı, yani el yazısı ve yayılma arasında kalan yukarıdaki li elemanının çocukları arasında döngü elemanlar döngü dışında ... advace teşekkürler!

not: JQuery'yi kullanmak istemiyorum, çünkü benim uygulamam Protoype kullanıyor ve JQuery ile çakışıyor, ikisi de birlikte kullanıyorum, Prototype kullanarak hızlı bir çözüm varsa bunu takdir ediyorum.

cevap

8

Bu çalışma sizin gibi bir şey ister miydi? sizin örnekte "veri" dizeleri ise

var child = liElement.firstChild; 
while(child){ 
    if(child.nodeName.toLowerCase() == 'script'){ 
     break 
    } 
    //do your stuff here 
    child = child.nextSibling; 
} 

Not, bu textNodes örnekleri olarak çocuk heirarchy var olacaktır.

: Bu şeyler üzerinde özel işlemler yapmak gerekirse, daha fazla düğüm tipleri burada
+0

Teşekkür ederim Bay Jordancpaul .. tam olarak ne istediğimi .. – JaHelia

-1

jquery'ye bir göz attınız mı? Çok güzel bir sorgu sözdizimi vardır. Tam olarak hangi elemanların tam olarak döngüde olmasını istediğinizden emin olduğumdan eminim ancak $ ('li> img') tüm görüntüleri tüm liste öğeleri altında döndürecektir. için spesifikasyonları kontrol daha jquery

jQuery seçicileri kullanabilirsiniz
+0

yapamam kullanıcı JQuery benim uygulamada prototip kullanıyorum ve kullanırsak o JQuery ile çakışmaya neden olacaktır çünkü. – JaHelia

+0

tamam, düzenlemenizi gördü. -1 yapan adama, JeHelia'nın JQuery'yi kullanamadığı gerçeğini ekledim. – Menahem

2

: seçimiyle ilgili Sonra döngü

$('li').children().not('script').not('span'); 

:

$('li').children(); 

dışla istenmeyen unsurlar:

tüm <li> çocukları alın :

$('li').children().not('script').not('span').each(function(index, element){ 
    //do sth like hide the element 
    $(element).hide(); 
}); 
+0

BTW: jQuery ayrıca '$' kullanan diğer kitaplıklar ile güzel oynayabilir. Bunun için bir çakışma modu yoktur: http://api.jquery.com/jQuery.noConflict/ – gunnarsson

+0

Bu yöntemi kullandım (noConflict) ancak sorun değil, site birçok sayfada çöküyor ve belirli bir nedeni yok. Bunun için, JQuery kütüphanesi kaldırırsanız herhangi bir kaza olur .. – JaHelia

+0

sadece bir kütüphane kolayca indirebilir jQuery seçmenlerin gücü ve başka bir şey vererek indirebilir –

1

bir çek gibi

switch(child.nodeType){ 
case 3: 
    //text Node 
    break; 
case 1: 
    //Element node 
    break; 
default: 
    //break; 
} 

çek dışarı https://developer.mozilla.org/en/nodeType yapmak senin için kesmek bir çözüm var isteyeceksiniz

$("li").each(function(index) { 
console.log($(this).find("span:first").text()); 
}); 

first span in Li

İlgili konular