атрибут jQuery get - PullRequest
       1

атрибут jQuery get

2 голосов
/ 16 июня 2010

На странице много блоков class="item".

Для каждого есть разные 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>?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 16 июня 2010

Подход jAndy должен работать, но он ожидает добавления 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, работает нормально.Я думаю, проблема в том, что ваш код предполагает, что data, возвращающийся из вызова ajax, будет элементом 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>
1 голос
/ 16 июня 2010

Это должно сделать это:

$(".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));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...