Get iframe Inhalt mit jquery-Selektor
Gibt es trotzdem, um den Zugriff auf ein iframe-Inhalte über einen Selektor? So etwas wie dieses:
$("iframe::contents .my-foo")
Bin ich permanent Zugriff auf ein iframe-Inhalten für ein Projekt bin ich derzeit auf und $("iframe").contents().find(".my-foo")
ist immer ein wenig mühsam, zu geben.
Wenn diese Funktion nicht vorhanden ist jquery out of the box, gibt es ein plugin, das diese Funktionalität bereitstellt? Wenn nicht, wie könnte ich schreiben, die ein solches plugin?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dieses Problem einmal, wo ich fand es langweilig. Ich habe nie eine Lösung gefunden, wie Sie schreiben einen einzigen Selektor wie.
Selbst, also die Auswahl ist noch Recht lang. Die naheliegendste Lösung ist für mich einfach nur speichern Sie es in eine variable.
Ist das besser?
contents()
=children()
+plaintext
. Einige werden vielleicht denken, was ist die Verwendung voncontents()
wenn wir könnten, verwenden Sie einfach$('iframe').find('.my-foo')
, dann Lesen Sie bitteThe contents() method can also access the HTML of an iframe, if it is in the same domain.
von w3schools.com/jquery/traversing_contents.aspIntuitiv, so scheint es mehr elegant, pack alles, was in der einen Selektor, aber die Wahrheit ist, dass, selbst wenn es ein solcher Selektor, es ist besser, von einem performance-Sicht, um die traverse mit der find(). Dann jQuery nicht Parsen und analysieren Zeichenfolge.
Hinzugefügt, hier für die Nachwelt. Die Lösung, die ich landete mit war das überschreiben der Wurzel jquery-Objekt mit einem bit-custom-parsing-code. So etwas wie dieses:
Beachten Sie, dass Doppel-Doppelpunkt (
::
) in css bedeutet wählen Sie pseudo-element, während einzelne Doppelpunkt bedeutet, wählen Sie durch pseudo-Klasse.Können Sie erstellen Sie Ihre eigenen benutzerdefinierten Selektor. Wie:
Nutzung sollten wie
$.extend
? Warum nicht fügen Sie die Eigenschaft direkt, wie diese:$.expr[":"].contents = function(...) { ... }
?$("iframe").contents().find(".my-foo")
. Funktionen hängen von der$.expr[':']
wirken wie Filter.