2012-09-10 19 views
5

Ich muss in der Lage sein, die aktuellen Selektoren im aktuellen Ansichtsfenster zu speichern und dann 10 Sekunden überprüfen, ob sie noch im aktuellen Ansichtsfenster des Benutzers sind.Konvertieren jquery Selektoren in Array

Meine Lösung dafür war, die Selektoren in einem Array zu speichern und dann in 10 Sekunden die alten Selektoren mit den neuen zu vergleichen und zu sehen, ob es eine Übereinstimmung gibt. Wenn sie ... etwas tun.

Also ich glaube, mit .each und bauen Sie das Array, es sei denn, jemand hat eine elegantere Lösung für diese?

$('.gridContainers:in-viewport') 

Dies wird eine Standardauswahl zurückgeben.

+0

ich es nicht bekommen. Können Sie das genauer ausführen? – jAndy

+0

Sie werden etwas Markup und etwas Javascript posten müssen, damit wir eine Vorstellung davon bekommen können, was Sie gerade tun – jackwanders

+1

[* Was haben Sie versucht? *] (Http://mattgemmm.com/2008/12/08/Was hast du schon versucht /) – zzzzBov

Antwort

14

Der Aufruf von $ (selector) gibt ein Array-ähnliches jQuery-Objekt zurück, kein tatsächliches JavaScript-Array, obwohl das Konvertieren in ein tatsächliches Array für die Zwecke dessen, was sie zu tun versuchen, unnötig ist.

So würde man einen Selektor in ein natives Javascript-Array verwandeln.

$(selector).toArray() 

Jquery.toArray()

+0

blimey! Wie zum Teufel habe ich das vermisst, Boyo! –

+0

es besteht keine Notwendigkeit, .toArray() aufzurufen, da $ (selector) bereits ein Array zurückgibt. – BishopZ

+0

Humm, mit toArray macht es aber zu einem trun js-Array. –

-1

Try Out als unten Methode:

$('element').find('selection'); 

Dadurch werden alle ausgewählten Elemente zu Array geben. Hoffe, das hilft

+4

'.find()' gibt ein jQuery-Objekt zurück, kein Array. – jackwanders

+0

Dies hilft nicht, da es nur ein Element findet, das den aktuellen Selektor abstuft. –

+0

Ja, aber es könnte Leuten helfen zu erkennen, dass es eine andere einfachere Lösung für das gibt, was sie mit einem Array erreichen wollten. Also +1 von mir. –

0

Mit ES6:

Array.from($(selector)); // return JS array