získejte úvodní značku včetně atributů – externalHTML bez innerHTML

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+">" .