Pro budoucí zaměstnance společnosti Google existuje způsob, jak to udělat bez jQuery:
tag = elem.outerHTML.slice(0, elem.outerHTML.indexOf(elem.innerHTML));
Od outerHTML
obsahuje úvodní značku následuje zrcadlo toho, co innerHTML
obsahuje, můžeme zadat podřetězec externalHTML od 0 (začátek úvodní značky) po místo, kde začíná innerHTML (konec otevírací značky), a protože innerHTML je zrcadlem externalHTML, kromě úvodní značky bude pouze úvodní značka vlevo!
Tento funguje s <br>
tagy, <meta>
tagy a další prázdné tagy:
tag = elem.innerHTML ? elem.outerHTML.slice(0,elem.outerHTML.indexOf(elem.innerHTML)) : elem.outerHTML;
Protože innerHTML by bylo prázdné v samouzavíracích značkách a indexOf('')
vždy vrací 0, výše uvedená modifikace kontroluje přítomnost innerHTML
první.
var wrapper = $('.class').clone().attr('id','').empty();
- Možná budete chtít změnit selektor tak, aby přesněji odpovídal
<a>
prvek, který hledáte. clone()
vytvoří novou kopii odpovídajících prvků, volitelně také zkopíruje obslužné rutiny událostí.- Použil jsem
attr
vymazat ID prvku, abychom ID neduplikovali. empty()
odstraní všechny podřízené uzly ('innerHTML
').
Zde je moje řešení:
opentag=elem.outerHTML.slice(0, elem.outerHTML.length-elem.innerHTML.length-elem.tagName.length-3);
Předpokládám, že zavírací značka má tvar:"</"+elem.tagName+">"
.