Почему мой код каменной кладки не работает с добавленными элементами

Я пытаюсь добавить новые элементы после начала кладки. У меня были ошибки, что каменная кладка не была инициализирована, пока я не удалил функцию imagesLoaded. У меня сейчас ошибок нет, но тайлы не раскладываются. Вы видите, что я делаю неправильно? Предпочтительно решение Jquery.

var count = 0;
function placeNewsTiles(news){ //places news tiles 
    var length = (news.data.length > 20) ? 20 : news.data.length;

    var $container = $('#news');
    if(count ==0){
            //$container.imagesLoaded( function() {
              $container.masonry({itemSelector: '.pageNewsItem'});
            //});
    } 

    for(var i = 0; i < length; i++){
        var el = '<div class="pageNewsItem" id="'+ count + i + '">\
                <div class="textWrap">\
                    <a href="' + news.data[i]._url + '">\
                    <strong>' + news.data[i]._title + '</strong>\
                    </a>\
                    <span class="source">' + news.data[i]._source + '</span>\
                </div>\
                <div class="imageWrap"></div>\
                <div class="thumbsOverlay" style="display:none">\
                    <div class="thumbs">\
                        <div>\
                            <a href="#"" class="up"><img src="../images/Thumbs-Up-2.png" /></a>\
                            <a href="#"" class="down"><img src="../images/Thumbs-Down-2.png" /></a>\
                        </div>\
                    </div>\
                </div>\
            </div>';

        $('#news').append(el).masonry( 'appended', el, true );
        //<p>' + news.data[i]._text + '</p>\
        //<span class="date">' + formatDate(news.data[i]._date) + '</span>\

        getTileImage({total: news.count, i:count + "" + i, url:news.data[i]._url});
    }

    newsPage = 0;
    count++;
    hoverTiles();
}

person CaitlinHavener    schedule 02.12.2014    source источник


Ответы (1)


Я думаю, проблема может заключаться в том, что el — это строка, а не элемент DOM. Попробуйте сделать следующее:

var el = $('...YourStringConcatenationHere...'); // el is now a jquery object

$('#news').append(el).masonry('appended', el[0], true); // el[0] is the DOM element
person SteamDev    schedule 02.12.2014
comment
Спасибо, это было проблемой! У меня все еще есть проблемы с тем, как это выглядит, если вы хотите попробовать! stackoverflow.com/questions/27277274 / Большое спасибо! - person CaitlinHavener; 03.12.2014