2017-02-09 3 views
8

Ich versuche, dynamisch packery Artikel von click Methode hinzuzufügen. Alles funktioniert gut, außer auf einen einzigen Klick packery hinzufügen drei neue Artikel. Meine Frage ist, wie man einen Gegenstand mit einem einzigen Klick hinzufügt?Packery angehängte Methoden fügen drei Elemente hinzu. Wie füge ich einen Artikel hinzu?

Method

Demo

Dank.

bearbeiten

Nach Seitenelemente Last Raster ist Fünf. Siehe das Bild unten.

Manually added items when page load first time

Wenn click die Anfügen Artikelbutton Packery mehr drei Elemente hinzuzufügen. Siehe das Bild unten.

After click the Append items button

Snippet

var $grid = $('.grid').packery({ 
 
    itemSelector: '.grid-item' 
 
}); 
 

 
$('.append-button').on('click', function() { 
 
    // create new item elements 
 
    var $items = getItemElement().add(getItemElement()).add(getItemElement()); 
 
    // append elements to container 
 
    $grid.append($items) 
 
    // add and lay out newly appended elements 
 
    .packery('appended', $items); 
 
}); 
 

 

 
// make <div class="grid-item grid-item--width# grid-item--height#" /> 
 
function getItemElement() { 
 
    var $item = $('<div class="grid-item"></div>'); 
 
    // add width and height class 
 
    var wRand = Math.random(); 
 
    var hRand = Math.random(); 
 
    var widthClass = wRand > 0.85 ? 'grid-item--width3' : wRand > 0.7 ? 'grid-item--width2' : ''; 
 
    var heightClass = hRand > 0.85 ? 'grid-item--height3' : hRand > 0.5 ? 'grid-item--height2' : ''; 
 
    $item.addClass(widthClass).addClass(heightClass); 
 
    return $item; 
 
}
* { box-sizing: border-box; } 
 

 
body { font-family: sans-serif; } 
 

 
/* ---- grid ---- */ 
 

 
.grid { 
 
    background: #DDD; 
 
    max-width: 1200px; 
 
} 
 

 
/* clear fix */ 
 
.grid:after { 
 
    content: ''; 
 
    display: block; 
 
    clear: both; 
 
} 
 

 
/* ---- .grid-item ---- */ 
 

 
.grid-item { 
 
    color: #ffffff; 
 
    text-align: center; 
 
    font-size: 30px; 
 
    line-height: 80px; 
 
    float: left; 
 
    width: 80px; 
 
    height: 80px; 
 
    background: #C09; 
 
    border: 2px solid hsla(0, 0%, 0%, 0.5); 
 
} 
 

 
.grid-item--width2 { width: 160px; } 
 
.grid-item--height2 { height: 160px; line-height: 160px; } 
 

 
.grid-item--width3 { width: 240px; } 
 
.grid-item--height3 { height: 240px; } 
 

 
button { font-size: 20px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<script src="http://mfzy.co/packery.pkgd.js"></script> 
 
<h1>Packery - appended</h1> 
 

 
<div class="grid"> 
 
    <div class="grid-item grid-item--width2">1</div> 
 
    <div class="grid-item grid-item--height2">2</div> 
 
    <div class="grid-item">3</div> 
 
    <div class="grid-item">4</div> 
 
    <div class="grid-item grid-item--height2">5</div> 
 
</div> 
 

 
<p><button class="append-button">Append items</button></p>

Meine Frage:

Wie kann ich Elemente steuern anhängen? Ich möchte dynamisch hinzufügen ein Artikel nicht drei Artikel auf einzelne click.

Hinweis:

Sie die unten Abstimmung nicht vorlegen, wenn Sie Lösung dafür vorgelegt habe.

+1

ist SO nicht geeignet für Crowddebugging. Es ist nicht klar, was ist der Punkt Ihrer Frage. –

+0

Das ist einfach. Hast du die Demo oder das Snippet gesehen? Bitte sehen Sie sich die Demo oder das Snippet an und versuchen Sie, auf die Schaltfläche ** Artikel anhängen ** zu klicken. – Rahul

+0

Wenn ich auf die Schaltfläche Elemente hinzufügen klicken, fügen Sie drei Elemente hinzu. Ich möchte nur einen Artikel hinzufügen. – Rahul

Antwort

3

Ich verstehe nicht, was Sie in dieser Zeile Todo versuchen?

var $items = getItemElement().add(getItemElement()).add(getItemElement());

, wenn Sie es sich dies ändern:

var $items = getItemElement();

nur ein Element hinzugefügt wird.

Demo

+0

Danke für ans. – Rahul

4

merkwürdige Frage. Entfernen Sie einfach zwei Elemente aus dem Code.

var $items = getItemElement(); 

http://codepen.io/anon/pen/egbLxQ

+0

Danke für Ans und Kommentare. – Rahul

+0

Sie sind willkommen, aber Sie sollten das nächste Mal debuggen, bevor Sie riesige Menge von Codes-Styles-HTML veröffentlichen. –

Verwandte Themen