2009-10-07 35 views
5

Parsing HTML String with jQuery adresinden jQuery'yi bir html dizesinde nasıl kullanabileceğimi sordum. Her şey çalışıyor, ama ajax'a uyguladığımda - işe yaramıyor. İşte kod.Ajax/jQuery ile HTML Dizesini Ayrıştırma

<script> 
    var url = 'moo.html'; 

    $.ajax({ 
    url: url, 
    success: function (code) 
    { 
     html = $(code); 
     html.each(function() { 
     alert($(this).html()); 
     }); 
    } 
    }); 
</script> 

moo.html

<div id='test'>zebra</div> 
<div id='foo'>bar</div> 

nasıl zebra ve barı alabilirim içeriyor?

cevap

14

ben moo.html yeni satırlara sizi açma olabileceğini düşünüyoruz. sona erecek html

Herhangi yeni satırlar jQuery tarafından ayrıştırılır ve metin düğümü unsurları "\n" olarak tutuluyor. Sonuç olarak, bu düğümlerden birincisi vurulduğunda $(code).each yinelemeyi durduracak ve üzerinde .html() (html() öğesi Eleman node tiplerinde çalışmaz).

Ne gerek html'nizin sadece div s kapmak için geçerli: html ayrıştırılırken

var divs = $(code).filter(function(){ return $(this).is('div') }); 
divs.each(function() { 
    alert($(this).html()) 
}) 
+0

ayarla Bu ne oldu mu! Teşekkürler! –

+0

Bah, scott. Bir geçici çözüm için benim düzenleme bakın html gelen tüm yeni satırları kaldırmaya gitmeyin :) –

+0

Ben kullanım filtre veya trim, ama bu kodu gönderme için teşekkürler. –

0

deneyin $ ('div', kodu) .each yerine .. şöyle ...

$('div', code).each(function() { 
    alert($(this).text()); 
}); 

ben ... gerçi test etmedim

0

Dene:

HTML ayrıştırılırken jQuery tek bir kök öğesi istediği için
html = $("div", code); 
html.each(function() { 
    alert($(this).html()); 
}); 

bunu sen buna sahip şekilde yapamaz nedenidir. Eğer değilse, yukarıdaki yolu yapmanız gerekir. Aşağıdaki HTML/JS da çalışmaya devam eder:

var html = $(code); 
html.children().each(....); 

<div> 
    <div id='test'>zebra</div> 
    <div id='foo'>bar</div> 
</div> 
+1

jQuery tek bir kök elemanı ihtiyacı yoktur. Örneğin, 'alert ($ (' (

') .length), "2" ile sonuçlanır. –

+1

Ama sanırım .each bunu gerektiriyor ve bence bunu kastediyordu :) –

+0

Bu örneklerin hiçbiri işe yaramıyor. Verileri bir ip olarak geri vermem gerekiyor mu? –