2009-10-07 26 views
5

Tôi hỏi tại Parsing HTML String with jQuery cách tôi có thể sử dụng jQuery trên chuỗi html. Đó là tất cả các công trình, nhưng khi tôi áp dụng nó để ajax - nó không hoạt động. Đây là mã.Phân tích chuỗi HTML bằng Ajax/jQuery

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

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

moo.html chứa

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

Làm thế nào tôi có thể nhận được ngựa vằn và thanh?

Trả lời

14

Tôi nghĩ rằng dòng mới trong moo.html có thể đang vấp ngã bạn.

Mọi dòng mới trong html của bạn sẽ được jQuery phân tích cú pháp và giữ nguyên thành phần nút văn bản "\n". Kết quả là $(code).each sẽ dừng lặp lại khi lần đầu tiên các nút này bị trúng và bạn gọi .html() trên đó (html() không hoạt động trên các loại nút không phải là phần tử).

gì bạn cần là để lấy chỉ div s trong html của bạn:

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

Chính xác đó là gì! Cảm ơn! –

+0

Bah, scott. Xem chỉnh sửa của tôi cho một workaround vì vậy bạn không đi loại bỏ tất cả các dòng mới từ html của bạn :) –

+0

Tôi đã đi sử dụng bộ lọc hoặc cắt, nhưng cảm ơn cho gửi bài mã đó. –

0

thử $ ('div', code) .each thay vì .. như vậy ...

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

tôi đã không kiểm tra nó mặc dù ...

0

Hãy thử:

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

Lý do bạn không thể thực hiện theo cách bạn có, bởi vì khi phân tích cú pháp HTML jQuery muốn có một phần tử gốc duy nhất. Nếu không thì bạn phải làm theo cách trên. HTML/JS sau cũng sẽ hoạt động:

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

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

jQuery không cần một phần tử gốc duy nhất khi phân tích cú pháp html. Ví dụ 'alert ($ ('

') .length)' kết quả trong "2". –

+1

Nhưng tôi nghĩ rằng .each yêu cầu nó và đó là những gì tôi nghĩ rằng ông có nghĩa là :) –

+0

Không có những ví dụ làm việc. Tôi có cần phải trả lại dữ liệu dưới dạng chuỗi không? –