How to bind a dynamic DIV to Jquery Masonry plugin?

后端 未结 3 1909
借酒劲吻你
借酒劲吻你 2021-01-20 16:25

I have some DIV\'s in my HTML that I load dynamically using AJAX.

$(\"#workPanel\").load(\"ex.html\");

I also have some static links that onclic

相关标签:
3条回答
  • 2021-01-20 16:41

    You are loading it like:

    $('#primary').masonry({
        columnWidth: 100, 
        itemSelector: '.box:not(.invis)',
        animate: true,
        animationOptions: {
            duration: speed,
            queue: false
        }
    });
    

    Ok, so you've defined the masonry options. Now, right after that, let's create a function and bind some events:

    var masonryUpdate = function() {
        setTimeout(function() {
            $('#primary').masonry();
        }, 500);
    }
    $(document).on('click', masonryUpdate);
    $(document).ajaxComplete(masonryUpdate);
    

    Never worry about it again!

    0 讨论(0)
  • 2021-01-20 16:46

    I think this is what you're after:

    To run masonry again you need to shuffle once the .load() completes, you can do this by running it as the callback function, like this:

    $("#workPanel").load("ex.html", function() {
      $('#primary').masonry();
    });
    
    0 讨论(0)
  • 2021-01-20 17:02

    Here is an example of adding items dynamically to a masonry collection:

    http://masonry.desandro.com/demos/adding-items.html

    Basically, you need to call the "reload" masonry option.

    For example to insert the jQuery item "newElement" into the #holder div:

    jQuery("#holder").prepend(newElement).masonry('reload')
    
    0 讨论(0)
提交回复
热议问题