5

I need to be able to store the current selectors in the current viewport and then 10 seconds check if they are still in the users current viewport.

My solution for this was to store the selectors in an array and then in 10 seconds compare the old selectors against the new and see if any match. If they do... do something.

So i believe using .each and build the array, unless somebody has a more elegant solution to this?

$('.gridContainers:in-viewport')

This will return a standard selectors.

6
  • I don't get it. Can you elaborate that more in detail ? Commented Sep 10, 2012 at 15:39
  • you're going to have to post some markup and some javascript so we can get an idea of what you're doing Commented Sep 10, 2012 at 15:39
  • 1
    What have you tried? Commented Sep 10, 2012 at 15:39
  • If I am understanding your question, their likely is a better way to handle the situation, but the way you are handling sounds fine to. No way to say for sure without a code sample. Please post some examples if the code you are using. Commented Sep 10, 2012 at 15:44
  • $(selector) always returns an array. Commented Sep 10, 2012 at 15:48

3 Answers 3

18

Calling $(selector) returns an array-like jQuery object, not an actual JavaScript array, though for the purposes of what they're trying to do converting it to an actual array may be unnecessary.

This is how one would turn a selector into an native Javascript array.

$(selector).toArray()

Jquery.toArray()

Sign up to request clarification or add additional context in comments.

5 Comments

there is no need to call .toArray() because $(selector) already returns an array.
humm, using toArray does turn it to a trun js array though.
The .get() (not to be confused with jQuery.get() which is an AJAX GET request) does the same thing, if you don't provide an argument. Not sure if there's any guidance on which should be used, though.
@BishopZ Calling $(selector) returns an array-like jQuery object, not an actual JavaScript array, though for the purposes of what they're trying to do converting it to an actual array may be unnecessary.
Take care, this is giving an array of DOM objects, not an array of jQuery objects
1

With ES6 :

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

Comments

0

Try Out FIND method as Below:

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

This will give all selected elements to Array. Hope this helps

3 Comments

.find() returns a jQuery object, not an array.
this won't help as it just finds an element descending your current selector.
Yes, but it could help people to realize that there is another simpler solution to what they were trying to achieve using an array. So +1 from me.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.