javascript – jQuery将DOM元素转换为不同类型

前端之家收集整理的这篇文章主要介绍了javascript – jQuery将DOM元素转换为不同类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要将DOM元素转换为不同的类型(如 HTML标记名称,在这种情况下为p),但仍保留所有原始元素属性.在这种情况下,它们是否适用于新的类型并不重要.

有什么建议如何做到这一点?

我看过只是创建一个新的元素并复制属性,但这并不是没有它自己的并发症.在Firefox中,DOMElement.attributes有助于仅包含具有值的属性,但在IE中它会报告该元素的所有可能属性.属性属性本身是只读的,所以没有办法复制.

解决方法

Sans-jQuery解决方案:
function makeNewElementFromElement( tag,elem ) {

    var newElem = document.createElement(tag),i,prop,attr = elem.attributes,attrLen = attr.length;

    // Copy children 
    elem = elem.cloneNode(true);
    while (elem.firstChild) {
        newElem.appendChild(elem.firstChild);
    }

    // Copy DOM properties
    for (i in elem) {
        try {
            prop = elem[i];
            if (prop && i !== 'outerHTML' && (typeof prop === 'string' || typeof prop === 'number')) {
                newElem[i] = elem[i];
            }
        } catch(e) { /* some props throw getter errors */ }
    }

    // Copy attributes
    for (i = 0; i < attrLen; i++) {
        newElem.setAttribute(attr[i].nodeName,attr[i].nodeValue);
    }

    // Copy inline CSS
    newElem.style.cssText = elem.style.cssText;

    return newElem;
}

例如.

makeNewElementFromElement('a',someDivElement); // Create anchor from div

猜你在找的jQuery相关文章