<div id="scriptparent">
<script type="text/javascript">
$( /* select above <div> from <script> ... without id and div property */ )
</script>
</div>
aus dem code habe ich a <script> innen blockieren <div> Block. Ich möchte auswählen <div> aus <script> ohne ID, Klasse, Namensselektoren. Wie kann ich das erreichen?
<div id="scriptparent">
<script type="text/javascript">
var scriptTag = document.scripts[document.scripts.length - 1];
var parentTag = scriptTag.parentNode;
alert(parentTag.id);
</script>
</div>
Wenn Ihre Skript-Tags nicht zurückgestellt werden (alle synchron geladen), funktioniert dies:
<div id="scriptparent">
<script type="text/javascript">
var thisScript = document.scripts[document.scripts.length - 1],
parent = thisScript.parentNode; // points to div#scriptparent
</script>
</div>
Das script-Tag unterstützt alle globalen HTML-Attribute, einschließlich id. Fügen Sie ein hinzu id zu Ihrem Skript-Tag, das als Haken zum Auswählen des übergeordneten Elements verwendet werden kann.
Was ist, wenn es mehr als eine Instanz des obigen Codes gibt? $("#myScript") wird nicht die nächste auswählen
-silentman.it
7. Oktober 2014 um 8:51 Uhr
und mehr als einmal Instanzen sollten nicht dasselbe haben id und das ist alles.
– T. Todua
7. Januar 2019 um 11:38 Uhr
TJ Crowder
Wenn der Code so ist, wie Sie ihn gezeigt haben, läuft er sofortwährend das DOM gebaut wird, können Sie vielleicht etwas damit anfangen document.body.lastChild.
Die kurze Antwort auf Ihre Frage lautet also:
var div = $(document.body.lastChild).closest('div');
Ich bin da ein bisschen paranoid, in meinen Tests (auf Chrome), document.body.lastChildist das divaber durch die Verwendung closest Ich beschäftige mich mit der Möglichkeit, dass es sein könnte script bei manchen Motoren.