2010-06-16 58 views
2

有在頁面上許多class="item"塊。jQuery的屬性得到

對於每一個有不同var item_link和AJAX請求。

Ajax搜索src屬性.message img並將其拋至var src

$(".item").each(function(){ 
    var item_link = "http://..."; 
    $(this).prepend('<div class="src"></div>'); 
    $.get(item_link, function(data) { 
     var src = $('.message img', data).attr('src'); 
    }); 
}); 

如何打印var src<div class="src"></div>

謝謝。

回答

3

jAndy's approach應該工作,但它等待添加DIV直到GET完成(這應該是罰款)。如果你把DIV到位做GET之前,它是真正重要的,不過,你可以這樣做:

$(".item").each(function(){ 
    var item_link = "http://..."; 
    var item_div = $('<div class="src"></div>'); 
    $(this).prepend(item_div); 
    $.get(item_link, function(data) { 
     var src = $('.message img', data).attr('src'); 
     item_div.text(src); 
    }); 
}); 

使用item_div.text(),這將顯示來自src值。如果src具有HTML標記,並且您想讓它們呈現,請改爲使用item_div.html()

編輯:你的「不工作」的評論後更新:

你問一下,設置div的文本部分,做工精細。我認爲問題在於你的代碼假設從ajax調用回來的data將是一個DOM元素。它不會,它會是一個字符串,直到你把它插入到DOM的某個地方(jQuery不會主動地將HTML變成DOM對象)。

這個版本處理該:

$(".item").each(function(){ 
    var item_link = "http://..."; 
    var item_div = $('<div class="src"></div>'); 
    $(this).prepend(item_div); 
    $.get(item_link, function(data) { 
     var img = $(data).find('.message img'); // <== Make a DOM element, 
               //  look for images in 
               //  .message containers 
     var src = img.attr('src'); 
     item_div.text(src); 
    }); 
}); 

工作例如:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 
<title>Test Page</title> 
<style type='text/css'> 
body { 
    font-family: sans-serif; 
} 
</style> 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js'></script> 
<script type='text/javascript'> 
(function() { 
    $(document).ready(pageInit); 

    function pageInit() { 
     $('#btnGo').click(go); 
    } 

    function go() { 

     $(".item").each(function(index){ 
      var item_link = "tempserver.jsp?index=" + index; 
      var item_div = $('<div class="src"></div>'); 
      $(this).prepend(item_div); 
      $.get(item_link, function(data) { 
       var img = $(data).find('.message img'); 
       var src = img.attr('src'); 
       item_div.text(src); 
      }); 
     }); 

    } 
})(); 
</script> 
</head> 
<body> 
<input type='button' id='btnGo' value='Go'> 
<div> 
    <div class='item'>Item 1</div> 
    <div class='item'>Item 2</div> 
    <div class='item'>Item 3</div> 
    <div class='item'>Item 4</div> 
</div> 
</body> 
</html> 

tempserver.jsp:

<div> 
<div class='message'><img src='image<%=request.getParameter("index")%>.png'></div> 
</div> 
+0

這並不工作太 – Happy 2010-06-16 13:04:39

+0

@Happy:只是做編輯,這個問題是不是在我還以爲你問的是一部分,但我想我找到了。 – 2010-06-16 15:22:18

1

這應做到:

$(".item").each(function(){ 
    var item_link = "http://...";  
    $.get(item_link, $.proxy(function(data) { 
    var src = $('.message img', data).attr('src'); 
    $(this).prepend('<div class="src">' + src + '</div>'); 
    }, this)); 
}); 
+0

@ T.J。克勞德:的確,我會刪除的第一部分 – jAndy 2010-06-16 12:54:25

+0

該解決方案提供了什麼,div.src犯規創建 – Happy 2010-06-16 12:55:36

+0

div.src必須是原創的每個.item – Happy 2010-06-16 12:56:05