So che posso racchiuderlo .html() in un tag, ma l'elemento stesso ha un ID, una classe e così via dinamicamente. Come faccio a ottenere jQuery per restituire il markup dell'elemento incluso se stesso?Come posso ottenere il markup di un elemento, incluso se stesso usando jQuery?
risposta
Per quanto ne so, non v'è alcun supporto "outerHTML" direttamente in jQuery, ma è possibile scrivere una funzione per emulare (in browser diversi da IE), oppure utilizzare this plugin:
// this will return the element and it's mark-up, of an element
// with the id myTag
var outer = $('#myTag').outerHTML();
Ovviamente Brandon non è l'unica implementazione .. sono sicuro che si potrebbe anche venire con altre implementazioni intelligenti ..
EDIT
Se siete appassionati di evitare le chiamate da aggiungere, forse si potrebbe provare qualcosa di simile ..
function getOuterHTML(el)
{
var wrapper = '';
if(el)
{
var inner = el.innerHTML;
var wrapper = '<' + el.tagName;
for(var i = 0; i < el.attributes.length; i++)
{
wrapper += ' ' + el.attributes[i].nodeName + '="';
wrapper += el.attributes[i].nodeValue + '"';
}
wrapper += '>' + inner + '</' + el.tagName + '>';
}
return wrapper;
}
// now, to replicate the sample above
var outer = getOuterHTML($('#myTag'));
L'unica cosa che è, io non sono sicuro se tutti i browser supportano la matrice attributi .. ma so che quelli mozilla-famiglia fanno, e IE ha il supporto nativo per outerHTML .. provalo (per quelli che non supportano l'array attributes puoi usare il metodo precedente che usa gli allegati)
Avrei dovuto dirlo prima, ma sto lavorando con un numero estremo di elementi e recentemente ho scoperto che .append() è un maiale da processore. Un modo per farlo senza .append()? –
@Justin, vedere l'esempio che ho aggiunto alla risposta. Non usa nessun'addetto .. –
Mi piace il tuo codice. Veramente cool! – Shiva
This blog post potrebbe aiutarvi.
egli descrive una tecnica che assomiglia a questo:
var html = $('<div>').append($('#top').clone()).remove().html()
Questa clona il div di interesse, lo aggiunge ad un div involucro, e poi si fa l'HTML del involucro - che equivale al codice HTML originale il primo div
Il suo suggerimento di circondarlo inizialmente in un div involucro dichiarato sembra un modo migliore per andare comunque. Allora non avresti bisogno di preoccuparti di tutto questo.
Senza alcun codice, seleziona l'elemento, seleziona il primo elemento interno, ottieni il suo genitore (quello che vuoi) quindi avvolgilo attorno alla selezione originale di youElement.html().
Ciò restituirà tutti i figli del genitore. Non solo il bambino o i bambini selezionati. – Henry
Uhm, non è necessario utilizzare un plugin, sono sicuro che si può provare
// this uses the jquery selectors, then returns the DOM element,
// which then u can use the standard outterHTML...
$('#myelement').get(0).outerHTML;
Edit: se i vostri selettori di jQuery sono corrispondenti più di un elemento, è possibile ciclo attraverso di loro, fare riferimento per la documentazione jQuery per gli esempi
outerHTML (è una proprietà, non una funzione btw) non è supportato in Firefox (penso che solo IE lo supporti) –
oh giusto. –
questo funziona bene:
jQuery.fn.outer = function() {
return $($('<div></div>').html(this.clone())).html();
}
+1: questa è di gran lunga la soluzione migliore per questo. :) – xil3
po 'tardi per questa domanda. Se usi jQuery per trovare un oggetto, puoi usare il seguente codice per ottenere l'HTML esterno.
HTML:
<div class="obj">
<a href="#" class="link">Link</a>
</div>
jQuery:
var $obj = $('.obj .link');
var outerHTML = $obj[0].outerHTML;
che sarà in uscita <a href="#" class="link">Link</a>
. Testato su ultime versioni di Chrome, ultime versioni di Firefox e IE11.Ecco un link a una codepen: http://codepen.io/aj372/pen/ZLmYbj
- 1. Come posso ottenere un elemento all'interno di un frame di frame usando JavaScript?
- 2. Rimuovi elementi onclick (incluso il pulsante Rimuovi stesso) con jQuery
- 3. Come posso ottenere il contenuto di CKEditor usando JQuery?
- 4. Come posso attivare il clic destro se si fa clic con il tasto sinistro su un elemento html usando jQuery?
- 5. Come posso ottenere un'immagine usando jquery ajax?
- 6. Come ottenere un elemento casuale in jquery?
- 7. Come posso ottenere il valore CSS ereditato usando Javascript?
- 8. Come nascondere un elemento genitore usando jquery?
- 9. Come posso verificare se un elemento ha elementi figli usando jquery?
- 10. Posso ottenere un oggetto jQuery da un elemento esistente
- 11. JS/jQuery - ottenere il tipo di elemento
- 12. Include jQuery, se non incluso già
- 13. Come posso sapere se un elemento corrisponde a un selettore?
- 14. Come seleziono un elemento di pari livello usando jQuery?
- 15. Come posso modificare il colore di un elemento canvas html5 usando jquery?
- 16. Come verificare che un elemento esista nel DOM usando jQuery?
- 17. Come posso convertire un elemento DOM in un elemento jQuery?
- 18. jQuery - Ottenere il genitore di secondo livello di un elemento
- 19. jquery cerca di ottenere il primo elemento
- 20. jQuery: Come posso rilevare se l'html è cambiato all'interno di un dato elemento?
- 21. Ottenere un selettore jQuery per un elemento
- 22. Come posso abilitare il 'draggable' su un elemento con contentEditable?
- 23. Come posso ottenere il valore del colore del bordo di un elemento utilizzando jQuery?
- 24. come ottenere array figli di un elemento in jquery
- 25. Posso usare jQuery find() per più di un tipo di elemento allo stesso tempo?
- 26. ottenere l'indice di jquery elemento "td"
- 27. Come trovo la posizione assoluta di un elemento usando jQuery?
- 28. Come aprire select elemento usando jquery
- 29. Come posso ottenere il genitore di una vista usando uiautomator?
- 30. Come posso ottenere il selettore originale usando la funzione on() di jQuery con un filtro?
Avrei dovuto dirlo prima, ma sto lavorando con un numero estremo di elementi e recentemente ho scoperto che .append() è un maiale da processore. Un modo per farlo senza .append()? –