2012-06-26 9 views
7

Szukałem na innych przykładów tutaj, ale wydają się być zastąpienie zawartości <tr> a nie cały rząd w tym <tr>.Wymienić cały wiersz tabeli (w tym <tr></tr>) przy użyciu JQuery

<table> 
    <tr style="display:block"> 
     <td id="someid">Test</td> 
     <td>Some text</td> 
    </tr> 
</table> 

Poniższy kod wydaje się tylko zastąpić innerHTML z <tr>. Muszę wymienić wszystko, łącznie z <tr>, aby rząd się zwinął. Czy ktoś może potwierdzić, że ten kod robi lub nie całkowicie zastąpić rząd:

var newtr = "<tr style='display:none'><td id='someid'></td><td></td></tr>" 
$("td#someid").parent().html(newtr); 

Powodem nie sądzę cała <tr> jest zastępowany jest fakt, że rząd nie zawali - chociaż ja testowałem HTML poza JQuery i działa dobrze.

Odpowiedz

20

Jesteś prawie tam, wystarczy użyć jQuery replaceWith[jQuery docs] funkcję:

$("td#someid").parent().replaceWith(newtr); 
+0

Wow, wygląda następująco jest odpowiedzią. Zmieniłem kod i działa lepiej. Poprzednio udało mi się zmienić wiersz około 32 razy, a wszystkie wiersze zniknęły. Wiedziałem, że coś jest nie tak. To naprawiło to. Ale moje wiersze wciąż się nie załamują. Może ta część jest pytaniem CSS, ale zostało przetestowane, aby działało na tej samej stronie HTML, co ten skrypt. Czy jest coś jeszcze, co muszę zrobić z końcem JQuery? Przy okazji, dziękuję za wszystkie te odpowiedzi! – rwkiii

+0

@rwkiii Jeśli potrzebujesz pomocy dotyczącej zwijania wierszy, powinieneś zadać nowe pytanie na ten temat. Wszystko to ma zastąpić wiersz tabeli. –

2

Jeśli próbujesz zastąpić obiektu, a nie jego zawartość :

$("td#someid").parent().replaceWith(newtr); 
2

Użyj replaceWith metody jquery, aby zamienić element.

$('#someid').parent().replaceWith(newtr); 
1

Jeśli wolisz technikę HTML w przeciwieństwie do przełączania się elementów, spróbuj tego:

Masz rację, mówiąc, że to nie zastąpi element tr. .html ("...") zastępuje wewnętrzny HTML elementu (w tym przypadku tr). Użyj JavaScript outerHTML do osiągnięcia tego celu: $("td#someid").parent().get(0).outerHTML = newtr;

+0

Jeśli dobrze pamiętam, 'outerHTML' nie jest przeglądarką. –

+0

FF 11.0+ Chrome 0.2+ IE 4.0+ Opera 7+ Safari 1.3+ obsługuje zewnętrzny HTML (https://developer.mozilla.org/en/DOM/element.outerHTML). JQuery 1.2+ obsługuje metodę replaceWith. – jaypeagi

1

można również sprawdzić ten JsFiddle

var newtr = "<tr style='display:none'><td id='someid'></td><td></td></tr>"; 

$("td#someid").parent().parent().html(newtr); 
+0

Spowoduje to zapisanie istniejącego html, jeśli istnieje więcej wierszy. – Adil

Powiązane problemy