如何使用jQuery获取元素的标记,包括自身?

Jus*_*Lee 6 jquery dom

我知道我可以在标签中包装它的.html(),但元素本身有一个动态设置的id,类等.如何让jQuery返回包含它自身的元素标记?

tan*_*hos 15

这将很好:

jQuery.fn.outer = function() {
    return $($('<div></div>').html(this.clone())).html();
} 
Run Code Online (Sandbox Code Playgroud)

  • +1 - 这是迄今为止最好的解决方案.:) (2认同)

Mik*_*scu 9

据我所知,jQuery中没有"outerHTML"支持,但你可以编写一个函数来模拟它(在IE以外的浏览器中),或者使用这个插件:

// this will return the element and it's mark-up, of an element
// with the id myTag
var outer = $('#myTag').outerHTML();
Run Code Online (Sandbox Code Playgroud)

显然Brandon不是唯一的实现..我相信你也可以提出其他聪明的实现..

编辑

如果你热衷于避免追加电话,也许你可以尝试这样的事情..

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'));
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,我不确定是否所有浏览器都支持属性数组..但我知道mozilla家族的那些,并且IE对outerHTML有原生支持..试一试(对于那些没有支持您可以使用以前使用追加的方法的属性数组)