2009-10-07 13 views
5

के साथ HTML स्ट्रिंग को पार्स करना मैंने Parsing HTML String with jQuery पर पूछा कि मैं HTML स्ट्रिंग पर jQuery का उपयोग कैसे कर सकता हूं। यह सब काम करता है, लेकिन जब मैं इसे AJAX पर लागू करता हूं - यह काम नहीं करता है। कोड यहाँ है।अजाक्स/jQuery

<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> 

मैं ज़ेबरा और बार कैसे प्राप्त कर सकते हैं?

उत्तर

14

मुझे लगता है कि moo.html में नई-पंक्तियों आप को ट्रिपिंग हो सकता है।

आपके एचटीएमएल में कोई भी नई लाइनें jQuery द्वारा पार्स किए जा रहे हैं और टेक्स्ट नोड तत्व "\n" के रूप में रखी जाएंगी। नतीजतन $(code).each इन नोड्स के पहले हिट होने पर पुनरावृत्त हो जाएगा और आप .html() पर कॉल करते हैं (html() गैर-तत्व नोड प्रकारों पर काम नहीं करता है)।

आपको क्या करना होगा अपने html में केवल div रों हड़पने के लिए है: जब एचटीएमएल पार्स करने

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

पर सेट किया है, यह वास्तव में क्या था! धन्यवाद! –

+0

बह, स्कॉट। वर्कअराउंड के लिए मेरा संपादन देखें ताकि आप अपने एचटीएमएल से सभी न्यूलाइनों को हटा नहीं सकें :) –

+0

मैं फ़िल्टर या ट्रिम का उपयोग कर रहा था, लेकिन उस कोड को पोस्ट करने के लिए धन्यवाद। –

0

कोशिश $ ('div', कोड) .प्रत्येक बजाय .. तो जैसे ...

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

मैं इसे हालांकि परीक्षण नहीं किया ...

0

प्रयास करें:

html = $("div", code); 
html.each(function() { 
    alert($(this).html()); 
}); 

कारण यह है कि आप इसे अपने तरीके से नहीं कर सकते हैं, क्योंकि HTML jQuery को पार्स करने पर एक रूट तत्व होना चाहिए। यदि ऐसा नहीं होता है तो आपको इसे ऊपर के तरीके से करना होगा। निम्न HTML/जे एस भी काम करेगा:

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

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

jQuery एक भी मूल तत्व की जरूरत नहीं है। उदाहरण के लिए 'अलर्ट ($ ('

')। लम्बाई)' परिणाम "2"। –

+1

लेकिन मुझे लगता है। हमें इसकी आवश्यकता है और यही वह है जो मुझे लगता है कि उसका मतलब है :) –

+0

उन उदाहरणों में से कोई भी काम नहीं करता है। क्या मुझे डेटा को स्ट्रिंग के रूप में वापस करने की आवश्यकता है? –