2009-04-01 36 views
60

Tôi có chuỗi HTML từ nguồn được tải Ajax. Tôi muốn lấy một số thuộc tính từ một đối tượng (hình ảnh) trong chuỗi này, trước khi tôi đặt HTML vào tài liệu.chuỗi phân tích cú pháp html với jquery

Tôi đã có một cái gì đó như:

$.ajax({ 
     url: uri+'?js', 
     success: function(data) { 
      var htmlCode = $(data).html(); 

      $('#otherObject').html(data); 
     } 
    }); 

Làm thế nào tôi có thể nhận được các thuộc tính (các src ví dụ) từ chuỗi HTML này?

Trả lời

106

Tôi không phải là chắc chắn 100%, nhưng sẽ không

$(data) 

tạo ra một đối tượng jquery với DOM cho dữ liệu đó, không kết nối bất cứ nơi nào? Hoặc nếu nó đã được phân tích cú pháp dưới dạng DOM, bạn có thể chỉ cần đi $ ("# myImg", dữ liệu) hoặc bất kỳ công cụ chọn nào phù hợp với nhu cầu của bạn.

EDIT
Đọc lại câu hỏi của bạn dường như 'dữ liệu' của bạn đã là một DOM, có nghĩa là bạn chỉ có thể đi (giả sử chỉ có một img trong DOM của bạn, nếu không bạn sẽ cần một chọn chính xác hơn)

$("img", data).attr ("src") 

nếu bạn muốn truy cập thuộc tính src. Nếu dữ liệu của bạn chỉ là văn bản, nó có lẽ sẽ làm việc để làm

$("img", $(data)).attr ("src") 
+2

uuh, cảm ơn câu trả lời của bạn! đó là giải pháp :) tôi đã không nhìn thấy nó. tôi chúc bạn một tháng tư tốt đẹp - và bây giờ tôi sẽ cảm thấy xấu hổ;) – MarvinS

+0

mhm, tôi đã từ bỏ bình luận của mình. ví dụ của bạn không làm việc cho ví dụ (được thử nghiệm trong phiên bản 7). tôi đã sử dụng "$ (dữ liệu)" - "dữ liệu" - "$ (dữ liệu) .html()" - không có gì hoạt động. bất kỳ đề xuất? – MarvinS

+0

$ ("img", $ ('

')) đã hoạt động trong FF (chưa có IE7). Chỉ có thẻ IMG kèm theo, hoặc được đặt trong một cơ thể KHÔNG làm việc, vì vậy có lẽ nó đã dịch sang một thực thể duy nhất? Bạn đã thử trực tiếp $ (dữ liệu) .attr()? – falstro

2

MarvinS.-

Hãy thử:

$.ajax({ 
     url: uri+'?js', 
     success: function(data) { 
       var imgAttr = $("img", data).attr('src'); 
       var htmlCode = $(data).html(); 
       $('#imgSrc').html(imgAttr); 
       $('#fullHtmlOutput').html(htmlCode); 
     } 
    }); 

này nên tải khối toàn html từ dữ liệu vào #fullHtmlOutput và src của hình ảnh thành #imgSrc.

1

chỉ cần thêm yếu tố container befor yếu tố img của bạn chỉ cần phải chắc chắn rằng yếu tố marry của bạn không phải là người đầu tiên, thử nghiệm bằng ie, ff

1

Một điều cần lưu ý - như tôi đã chính xác vấn đề này ngày hôm nay, tùy thuộc vào bạn HTML jQuery có thể hoặc không thể phân tích cú pháp nó tốt. jQuery sẽ không phân tích cú pháp HTML của tôi thành một DOM đúng - trên các tệp tuân thủ XML nhỏ hơn, nó hoạt động tốt, nhưng HTML mà tôi có (sẽ hiển thị trong một trang) sẽ không phân tích cú pháp khi được trả về một cuộc gọi lại Ajax.

Cuối cùng, tôi chỉ tìm kiếm thủ công trong chuỗi cho thẻ tôi muốn, không lý tưởng nhưng đã hoạt động.

+0

Điều này có thể giúp nếu bạn phân tích cú pháp toàn bộ trang: http://stackoverflow.com/a/1069953/854477 –

Các vấn đề liên quan