Richtige Art, appendTo in jquery zu verwenden

Lesezeit: 2 Minuten

Benutzer-Avatar
Benutzer1763812

Verwende ich die jquery appendTo-Methode im folgenden Code richtig?

Ich frage, weil es beim Testen korrekt angezeigt wird jsfiddle aber wenn ich denselben Code auf meinem lokalen Server (in FF, IE und Chrome) verwende, wird er mit länglichen Kästchen angezeigt:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Ich gehe davon aus, dass ich etwas falsch mache. Vielen Dank.

HTML

<div class="ws-css-table"  >
  <div class="ws-css-table-tr">
        <div class="ws-css-table-td"></div>
        <div class="ws-css-table-td"></div>
    </div>
    <div class="ws-css-table-tr">
        <div class="ws-css-table-td"></div>
        <div class="ws-css-table-td"></div>
    </div>
    <div class="ws-css-table-tr">
        <div class="ws-css-table-td"></div>
        <div class="ws-css-table-td"></div>
    </div>    
</div>   

<br/>
<button id="css-icol">Col +</button><br/><br/>

Abfrage

$('#css-icol').click(function(){
    $(".ws-css-table-td:last").clone().appendTo('.ws-css-table-tr');

  var tblArr = $('.ws-css-table > .ws-css-table-tr').map(function ()
   {
    return $(this).children().map(function ()
    {
        return $(this);
    });
});     

lastCol = $('.ws-css-table-tr:first > .ws-css-table-td').length;
 for (r=0; r<$('.ws-css-table-tr').length; r++)
    tblArr[r][lastCol-1].text('X');
 });    

css

.ws-css-table {
    display: table;
}
.ws-css-table-tr { 
    display: table-row;     
}
.ws-css-table-td { 
    display: table-cell;
    border:1px solid #000;
    width: 15px;
    height:15px;
    text-align:center;
  vertical-align:middle;
}

  • Der Code sieht gut aus, es scheint, als würden Sie von CSS-Elementen beeinflusst, die nicht im Beispiel gezeigt werden.

    – Sean Phillips

    19. Oktober 2015 um 11:38 Uhr

  • Danke für die Antwort. Mir sind keine anderen CSS-Elemente bekannt. Gibt es eine Möglichkeit zu überprüfen?

    – Benutzer1763812

    19. Oktober 2015 um 11:47 Uhr

  • Auch wenn ich dem “Raster” weitere Spalten hinzufüge, erscheinen die “X” in den Kästchen.

    – Benutzer1763812

    19. Oktober 2015 um 12:18 Uhr

  • Schön arbeiten? jsfiddle.net/110ewzuk

    – Joakim M

    19. Oktober 2015 um 12:22 Uhr


  • Verwenden Sie die Firebug- oder Chrome-Entwicklertools, um den Typ des Dokuments zu überprüfen, das Sie rendern (besonders wichtig für IE) und welches CSS zum Rendern verwendet wird (Firebug/HTML/Computed) oder (Firebug/HTML/Layout).

    – Ewen

    19. Oktober 2015 um 14:02 Uhr

Benutzer-Avatar
Paul Gatnar

Sie haben einen Fehler in dieser Zeile:

$(".ws-css-table-td:last").clone().appendTo('.ws-css-table-tr');

Sie wählen die letzte Zelle in der Tabelle aus und klonen sie in jede Zeile. Wenn Sie die Spalte kopieren möchten, müssen Sie die letzten Zellen in allen Zeilen auswählen und dann über die geklonten Zellen iterieren. Endlich die Methode after ist hier eleganter…

$(".ws-css-table-td:last-child")
  .each(function(){
    var $this=$(this)
    $this.after($this.clone())
  })

Um eine leere Spalte zu erstellen, verwenden Sie:

$(".ws-css-table-td:last-child")
  .after("<div class="ws-css-table-td"/>")

  • In der Tat ein eleganter Selektor.

    – nodisch

    20. Oktober 2015 um 18:21 Uhr

  • @nrodic danke, jquery ist hier, um den Code elegant zu machen

    – Pawel Gatnar

    20. Oktober 2015 um 18:39 Uhr

1385910cookie-checkRichtige Art, appendTo in jquery zu verwenden

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

Privacy policy