Append array to DOM
Всем привет!
У меня есть массив вида: var aImages =[ { link: "http://ya.ru", image :"/upload/image01.jpg", width: "900" }, { link: "http://ya.ru", image :"/upload/image02.jpg", width: "1000" } ] Есть разметка в html: <div id="block">...</div> Нужно из массива стянуть данные и вставить в #block, результат должен быть таким: <div id="box"> <div class="item"><a href="http://ya.ru"><img src="/upload/image01.jpg" width="900" /></a></div> <div class="item"><a href="http://ya.ru"><img src="/upload/image02.jpg" width="1000" /></a></div> </div> Как это делается на jquery, какой быстрый способ? Помогите примером пожалуйста. Спасибо! |
Пытаюсь вот так
jQuery.each( aImages, function( url, image, width ) { $("#box").append("<div class='item' style='width:" + width + "'><a href='" + url + "' title=''><img src='" + image + "' /></a></div>"); }); Но в html получаю <div class="item" style="width:undefined"><a href="0" title=""><img src="[object Object]"></a></div> |
jQuery.each( aImages, function () { $("#box").append("<div class='item' style='width:" + this.width + "'><a href='" + this.url + "' title=''><img src='" + this.image + "' /></a></div>"); }); |
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="block">...</div> <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> <script> var aImages =[ { link: "http://ya.ru", image :"/upload/image01.jpg", width: "900" }, { link: "http://ya.ru", image :"/upload/image02.jpg", width: "1000" } ] jQuery.each( aImages, function() { $("#block").append("<div class='item' style='width:" + this['width'] + "'><a href='" + this['link'] + "' title=''><img src='" + this['image'] + "' /></a></div>"); }); </script> </body> </html> |
|
namez,
:blink: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { var aImages = [{ link: "http://ya.ru", image: "/upload/image01.jpg", width: "900" }, { link: "http://ya.ru", image: "/upload/image02.jpg", width: "1000" }]; var $block = $('#block') $.each(aImages, function(indx, el) { var $div = $('<div/>', { 'class': 'item' }), $a = $('<a/>', { 'href': el.link }), $img = $('<img/>', { 'src': el.image, 'width': el.width }); $img.appendTo($a); $a.appendTo($div); $div.appendTo($block) }); alert($('body').html()) }); </script> </head> <body> <div id="block"></div> </body> </html> |
Safort я уже сам решил если не выдел мой последний коммент -) Спасибо все равно что ответил -)
рони, зачем такие трудности? |
Можно же свести к одной операции с DOM, а не выполнять отдельно добавление каждого div.item:
$('#box').html(aImages.reduce(function (html, data) { return html + '<div class="item" style="width:"' + data.width + 'px"><a href="' + data.url + '" title=""><img src="' + data.image + '"></a></div>'; }, '')); |
del
|
namez,
Цитата:
//ну наконец-то я опередил рони по ответам) |
Часовой пояс GMT +3, время: 04:48. |