2012-05-06 6 views
7

Ich habe diesen Code in HTMLBester Weg, um die Schalterelemente Umwickeln mit jQuery

<span id="s">Attachments</span> 

Wie jQuery verwenden, um das äußeree SPAN Element mit dem folgenden Tabelle Codeblock zu wechseln, so dass der „Attachments“ Text eingewickelt wird mit dem Tabellenelement.

<table id="t"> 
    <tr> 
    <td>Attachments</td> 
    </tr> 
</table> 
+0

hier eine Lösung gefunden: http://stackoverflow.com/questions/17872320/jquery-changing-wrapping-tag –

Antwort

2

Sie eine Tabelle mit einem tr und td, legen Sie die HTML-Inhalte aus der Spanne in das neue td Element, legen Sie die Tabelle unmittelbar nach der Spanne schaffen könnten, und dann die Spanne schließlich entfernen.

Ich nehme an mit "swipe" meinst du "swap"? Deshalb habe ich den ursprünglichen Bereich entfernt. Wenn dies nicht der Fall ist, lassen Sie einfach den Anruf remove.

+0

Dank! Vielleicht hast du eine Idee, warum das nicht funktioniert? http://jsfiddle.net/5VG6F/ –

+1

Versuchen Sie stattdessen: http://jsfiddle.net/Fh24j/. Ich musste die jsFiddle ändern, um onLoad nicht zu verwenden, da es nicht in der Lage war, deine Funktion zu definieren. Ich habe auch den Code vereinfacht und insertAfter auf denselben Befehl gesetzt, der die Tabelle erstellt. – jmort253

+0

Entfernen meines vorherigen Kommentars. –

2

Wickeln Sie das #s Element, dann ersetzen Sie es mit seinem eigenen Inhalt:

$("#s") 
    .wrap("<table id='t'><tr><td></td></tr></table>") 
    .replaceWith(function(){ 
     return this.innerHTML; 
    }); 

Demo: http://jsbin.com/elotan/edit#source

Nach weiterer Diskussion in den Kommentaren unten, es erscheint das OP ein in die Lage sein wollte, zu schaffen Tabelle ad-hoc, und fügen Sie #s in eines seiner td 's ein. Folgendes kann besser sein:

$("<table>", { 
    id:'t', html:'<tr><td>Foo</td><td>' + $("#s").html() + '</td></tr>' 
}).replaceAll("#s"); 
+0

Das ist großartig! Ich bin ein wenig puzzled, woher weiß es, wo der Text eingefügt werden soll. Zum Beispiel: http: //jsbin.com/asinop Wie dos es wissen, den "Attachement" in Zelle-1, aber nicht in Zelle-2 einfügen? –

+1

@RegisteredUser Die erste Zelle wird als erster innerster Container betrachtet. Als solches wird der letztendliche Ort verwendet. Ich würde jedoch vermeiden, zu kompliziert mit Ihrem Wrapper-String zu werden. – Sampson

+0

OK, aber nur eine Frage. Was, wenn ich möchte, dass der Standort der zweite TR/TD als Container ist? Welche Änderung soll ich machen? –

Verwandte Themen