Get selected element's outer HTML

前端 未结 30 3033
礼貌的吻别
礼貌的吻别 2020-11-21 04:50

I\'m trying to get the HTML of a selected object with jQuery. I am aware of the .html() function; the issue is that I need the HTML including the selected obje

30条回答
  •  轮回少年
    2020-11-21 05:10

    To make a FULL jQuery plugin as .outerHTML, add the following script to any js file and include after jQuery in your header:

    update New version has better control as well as a more jQuery Selector friendly service! :)

    ;(function($) {
        $.extend({
            outerHTML: function() {
                var $ele = arguments[0],
                    args = Array.prototype.slice.call(arguments, 1)
                if ($ele && !($ele instanceof jQuery) && (typeof $ele == 'string' || $ele instanceof HTMLCollection || $ele instanceof Array)) $ele = $($ele);
                if ($ele.length) {
                    if ($ele.length == 1) return $ele[0].outerHTML;
                    else return $.map($("div"), function(ele,i) { return ele.outerHTML; });
                }
                throw new Error("Invalid Selector");
            }
        })
        $.fn.extend({
            outerHTML: function() {
                var args = [this];
                if (arguments.length) for (x in arguments) args.push(arguments[x]);
                return $.outerHTML.apply($, args);
            }
        });
    })(jQuery);
    

    This will allow you to not only get the outerHTML of one element, but even get an Array return of multiple elements at once! and can be used in both jQuery standard styles as such:

    $.outerHTML($("#eleID")); // will return outerHTML of that element and is 
    // same as
    $("#eleID").outerHTML();
    // or
    $.outerHTML("#eleID");
    // or
    $.outerHTML(document.getElementById("eleID"));
    

    For multiple elements

    $("#firstEle, .someElesByClassname, tag").outerHTML();
    

    Snippet Examples:

    console.log('$.outerHTML($("#eleID"))'+"\t", $.outerHTML($("#eleID"))); 
    console.log('$("#eleID").outerHTML()'+"\t\t", $("#eleID").outerHTML());
    console.log('$("#firstEle, .someElesByClassname, tag").outerHTML()'+"\t", $("#firstEle, .someElesByClassname, tag").outerHTML());
    
    var checkThisOut = $("div").outerHTML();
    console.log('var checkThisOut = $("div").outerHTML();'+"\t\t", checkThisOut);
    $.each(checkThisOut, function(i, str){ $("div").eq(i).text("My outerHTML Was: " + str); });
    
    
    
    This will
    be Replaced
    At RunTime

    Open Console to see results

提交回复
热议问题