2012-06-26 14 views
7

Ho esaminato altri esempi qui, ma sembra che stiano sostituendo il contenuto di <tr> e non dell'intera riga incluso lo <tr>.Sostituire l'intera riga della tabella (incluso <tr></tr>) utilizzando JQuery

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

Il seguente codice sembra sostituire solo l'innerHTML del <tr>. Devo sostituire tutto, incluso lo <tr> in modo che la riga crolli. Qualcuno può confermare che questo codice fa o non sostituisce completamente la riga:

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

Il motivo per cui non credo che l'intero <tr> viene sostituito è perché la riga non crolla - anche se ho testato il HTML al di fuori di JQuery e funziona perfettamente.

risposta

20

Sei quasi, basta usare la funzione jQuery replaceWith[jQuery docs]:

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

Wow, sembra che questo è la risposta. Ho cambiato il mio codice e funziona meglio. In precedenza ero in grado di cambiare la riga circa 32 volte e tutte le righe sparivano. Sapevo che c'era qualcosa di sbagliato. Questo ha risolto questo. Ma le mie file non stanno ancora crollando. Forse questa parte è una domanda CSS, ma questo è stato testato per funzionare nella stessa pagina HTML di questo script. C'è qualcos'altro che devo fare sulla fine delle cose con JQuery? A proposito, grazie per tutte queste risposte! – rwkiii

+0

@rwkiii Se hai bisogno di aiuto per la compressione delle righe, dovresti fare una nuova domanda al riguardo. Tutto ciò che fa è sostituire una riga della tabella. –

3

Il corretto funzionamento è .replaceWith:

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

Se si sta cercando di sostituire l'oggetto, non il suo contenuto :

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

Utilizzare replace con il metodo jquery per sostituire l'elemento.

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

Se si preferisce la tecnica HTML al contrario di commutazione fuori elementi, provate questo:

Lei ha ragione nel dire che questo non andrà a sostituire l'elemento TR. .html ("...") sostituisce l'HTML interno dell'elemento (il tr in questo caso). Utilizzare l'outerHTML JavaScript per raggiungere questo obiettivo: $("td#someid").parent().get(0).outerHTML = newtr;

+0

Se ricordo correttamente, 'outerHTML' non è cross-browser. –

+0

FF 11.0+ Chrome 0.2+ IE 4.0+ Opera 7+ Safari 1.3+ supporta HTML esterno (https://developer.mozilla.org/en/DOM/element.outerHTML). JQuery 1.2+ supporta replaceWith metodo. – jaypeagi

1

è anche possibile controllare questo JsFiddle

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

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

Questo sovrascriverà l'html esistente, se esistono più righe. – Adil

Problemi correlati