2016-07-28 5 views
0

Das ist mein Markup in HTML5Add Liste Gruppenelement, das ein Formular mit Eingaben in einen ul enthält unter Verwendung von JS

<ul class="list-group"> 
    <li class="list-group-item"> 
     <form action="" method="post"> 
      <div> 
       <span class="categoryname"><?php htmlout($category['name']); ?></span> 
       <input type="hidden" class="id" name="id" value="<?php echo $category['id']; ?>"> 
       <input type="hidden" name="project" value="<?php echo $projectid; ?>"> 
       <button type="button" name="action" value="Edit" class="edit btn pull-right btn-link" data-toggle="tooltip" title="Edit Name"> 
        <i class="glyphicon glyphicon-edit" style="font-size: large; color: black"></i> 
       </button> 
      </div> 
     </form> 
    </li> 
</ul> 

Wie kann ich ein li zum ul mit JQuery/JS auf eine Schaltfläche klicken hinzufügen? Neu bei Web-Technologien und Entwicklung. Hilfe geschätzt.

Antwort

2

, wenn Sie HTML mit Jquery hinzufügen möchten, können Sie die Methoden verwenden .append/.html ...

http://api.jquery.com/append/

so was können Sie tun, ist die HTML kopieren und fügen Sie es

$('#myButton').on('click', function(e) { 
    var html = $('#what-i-want-to-copy').html(); // returns a string 
    $('#ul').append(html) 

    // or you can add plain text 
    $('#ul').append('<li></li>') 
}) 

aber ich sehe, Sie verwenden PHP in Ihrem Code dort, und alles, was Code-Snippet tun wird, kopiert die HTML gerendert, wie es ist, und ich nehme an, Sie wollen es mit einigen Daten vom Server, so würde ich vorschlagen Verwenden Sie Vorlagen und ret Rufen Sie die Daten bei Klick ab und hängen Sie dann den HTML-Code mit dieser Vorlage und den Daten an.

Lesen Sie mehr:

Explanation of <script type = "text/template"> ... </script>

+0

wenn ich gab, dass '' li' ein id' wäre es auch alle ihre Kinder wie die Formulareingaben und Buttons kopieren? – marc

+0

die ID, die ich dort stelle, ist nur ein Selektor, den Sie eine Klasse oder ein Attribut etc verwenden können ... aber yes, das '.html()' verwendet, gibt eine Zeichenkette des Inhalts des Elements zurück und dann können Sie sie anfügen – WalksAway

+0

aber es wird Kopiere den HTML-Code wie es ist !!! Wenn Sie möchten, dass die Daten im Inneren anders sind (Daten vom Server, die ich meine), würde ich vorschlagen, Vorlagen – WalksAway

1

reine JavaScript-Lösung.

function foo() { 
 
//assuming this is the first DOM element with "list-group" class. 
 
document.querySelector(".list-group").innerHTML += "<li>your content</li>"; 
 

 
/* 
 
or, 
 

 
document.getElementsByClassName("list-group")[0].innerHTML += "<li>your content</li>"; 
 

 
or, 
 

 
var li = document.createElement("li"); 
 
var inside = document.createTextNode("your text"); 
 
li.appendChild(inside); 
 
document.querySelector(".list-group").appendChild(li); 
 

 
*/ 
 

 

 
}
<ul class="list-group"> 
 
    <li class="list-group-item"> 
 
     <form action="" method="post"> 
 
      <div> 
 
       <span class="categoryname">Lorem</span> 
 
       <input type="hidden" class="id" name="id" value="1"> 
 
       <input type="hidden" name="project" value="2"> 
 
       <button type="button" name="action" value="Edit" class="edit btn pull-right btn-link" data-toggle="tooltip" title="Edit Name" onclick="foo()"> 
 
      Click Me 
 
       </button> 
 
      </div> 
 
     </form> 
 
    </li> 
 
</ul>

+0

danke. Wie kann ich einen Listener binden, den ich auf '$ ('. Edit')' hatte, nachdem das neue 'li' hinzugefügt wurde? es scheint, als ob der Button Klick funktioniert nicht auf dem neu hinzugefügten 'li' – marc

+0

sorry, nicht wirklich bekommen, was Sie vorhaben? ist es was du willst - 'document.querySelector (". edit "). addEventListener (" click ", einigeFunktion)'? – marmeladze

+0

Da alle "li" eine Schaltfläche als Kind haben, bleiben die neuen dynamisch hinzugefügten Schaltflächen an denselben Listener gebunden? Ich benutze '$ (" # edit "). Click()' um Ereignisse zu generieren – marc