2010-06-16 45 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