Um ein FULL jQuery Plugin zu erstellen als .outerHTML
Fügen Sie das folgende Skript in eine beliebige js-Datei ein und fügen Sie es nach jQuery in Ihren Header ein:
Update Die neue Version bietet eine bessere Kontrolle sowie einen jQuery Selector-freundlicheren 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);
Dies ermöglicht es Ihnen, nicht nur die outerHTML eines Elements, sondern sogar ein Array Rückkehr von mehreren Elementen auf einmal! und kann sowohl in jQuery Standard-Stile als solche verwendet werden:
$.outerHTML($("#eleID")); // will return outerHTML of that element and is
// same as
$("#eleID").outerHTML();
// or
$.outerHTML("#eleID");
// or
$.outerHTML(document.getElementById("eleID"));
Für mehrere Elemente
$("#firstEle, .someElesByClassname, tag").outerHTML();
Schnipsel-Beispiele:
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); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://rawgit.com/JDMcKinstry/ce699e82c7e07d02bae82e642fb4275f/raw/deabd0663adf0d12f389ddc03786468af4033ad2/jQuery.outerHTML.js"></script>
<div id="eleID">This will</div>
<div id="firstEle">be Replaced</div>
<div class="someElesByClassname">At RunTime</div>
<h3><tag>Open Console to see results</tag></h3>
91 Stimmen
Es ist ungeheuerlich, dass jQuery nicht über Mittel verfügt, um so etwas zu tun. Ich brauche das auch.
9 Stimmen
Ich habe eine Funktionsanfrage mit einem Verweis auf diesen Thread gestellt, und die erste Reaktion war positiv. bugs.jquery.com/ticket/8142
0 Stimmen
Oh, wow. Also etwas, das ich bemerkt, dass nicht in jQuery war, könnte tatsächlich machen es in eine zukünftige jQuery von diesem StackOverflow Post. Ich hoffe es. Das wäre cool, und die .outerHTML (oder so ähnlich) Funktion ist einfach nur praktisch.
1 Stimmen
$("#selectorid").attr('outerHTML') wird Ihnen helfen
11 Stimmen
Um einigen Leuten ein paar Sekunden ihrer Zeit zu ersparen, die Lösung von Ulhas Tuscano auszuprobieren: Sie funktioniert nicht.
74 Stimmen
Äh, was ist hier los?
$('div')[0].outerHTML
.0 Stimmen
@SalmanPK der Fragesteller hat seine Frage vor 2 Jahren gepostet, und ich denke, dass die aktuelle Lösung, die Sie vorgeschlagen haben, vor zwei Jahren nicht verfügbar/möglich war.
2 Stimmen
@DexterHuinda Ich bezog mich auf die hackigen Antworten unten, die einige Monate alt sind.
24 Stimmen
@Tuscan bedeutete $("#selectorid").prop("outerHTML")