jQuery anhängen und zusammenschieben

Lesezeit: 2 Minuten

Ich habe diese Append-Methode, die ich erstellt habe, um weitere Eingabefelder hinzuzufügen, bis 10 davon vorhanden sind, die das Erstellen von mehr deaktivieren.

i = 0;
$('#add-link').click(function() 
{   
    if(i < 9)
    {
        $('.insert-links').append('<div class="new-link" name="link[]"><input type="text" /></div>');
        i++;
    }
    if(i == 9)
    {
        $('#add-link').html('');    
    }
});

Obwohl es gut ist. Ich möchte jedoch ein slideDown implementieren, wenn es angehängt wird, ich habe versucht, dies zu tun:

$('.insert-links').append('<div class="new-link" name="link[]"><input type="text" /></div>').slideDown("fast");

Was gar nicht geht.

Benutzer-Avatar
Chris Laplante

append() gibt einen Verweis auf den ursprünglichen Selektor zurück, nicht auf das, was angehängt wurde. Ich denke du suchst das hier:

$('.insert-links').append('<div style="display: none;" class="new-link" name="link[]"><input type="text" /></div>')
$('.insert-links').find(".new-link:last").slideDown("fast");

Live-Demo:

http://jsfiddle.net/V4SVt/2/

Benutzer-Avatar
Saschoar

Wie die Lösung von SimpleCoder, aber in nur einer Zeile appendTo():

$('<div style="display: none;" class="new-link" name="link[]"><input type="text" /></div>').appendTo($('.insert-links')).slideDown("fast");

Demo: http://jsfiddle.net/V4SVt/336/

  • In einer Zeile zu stehen, verliert nur die Lesbarkeit. Ich bin mir nicht sicher, was Sie damit gewinnen

    – Carrie Kendall

    6. Oktober 2014 um 16:05 Uhr


  • Der einzeilige Aspekt ist viel weniger wichtig als die Verwendung von .appendTo(). Das ist die entscheidende Änderung.

    – Doug S

    6. September 2015 um 21:10 Uhr

Obwohl die Lösung von SimpleCoder vollkommen gültig ist, würde ich es so machen:

i = 0;
$('#add-link').click(function() {   
    if(i < 9) {
        $('.insert-links').append('<div style="display: none;" class="new-link link_' + i + '" name="link[]"><input type="text" /></div>');
        $('.link_' + i).slideDown("fast");
        i++;
    }
    if(i == 9) {
        $('#add-link').fadeOut('200');
    }
});

Der Grund dafür wäre, dass jeder Link input würde eine ID in Form einer zweiten Klasse erhalten, was sehr praktisch wäre, um sie auszuwählen, falls man ein Element entfernen möchte, falls man versehentlich mehr als nötig hinzufügt. Ich habe auch einen Fade-Out-Effekt hinzugefügt add-link -Element, damit der Benutzer nicht verwirrt wird, dass es einfach verschwunden ist. Natürlich ist es nur eine Frage des persönlichen Geschmacks, aber ich finde es benutzerfreundlicher.

Hoffe das hilft.

1144120cookie-checkjQuery anhängen und zusammenschieben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy