3

I am trying to loop through an array of jquery objects I have created that are hidden when clicked. Right now Im not sure where I am going wrong with this and was wondering if anyone could explain what I need to do to make it work?

I have created a fiddle here http://jsfiddle.net/hd5qa/3/

All advice much appreciated

Kyle

1
  • the reason I have created objects is because I want to use them multiple times Commented Oct 9, 2011 at 22:11

5 Answers 5

6

The problems with your fiddle were as follows:

1) You hadn't included the jQuery library.

2) You hadn't closed the each loop correctly (missing parenthesis).

3) You were missing the id selector # from "myButton".

Here's an updated, working fiddle.

Note, however, that you could simply do this:

$("#blue, #red, #green, #black, #purple, #orange").hide();

Or better, put all of those in a containing parent element, and simply hide that, or use $("#parent div").hide();.

You can store the result of that selection in a single variable, rather than the 6 you currently have, as jQuery methods tend to operate on each element in the matched set without the need for a loop.

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

2 Comments

Or use a class - no extra tags.
Yeah, all sorts of better options than storing an array of each element as a separate jQuery object and iterating over that array!
1

is there a reason you want to do this trough an array of objects?

you could simplify it all by adding your selectors like this:

$('#blue, #red, #green, #black, #purple, #orange').hide();

Comments

0

There are three problems:

  • You run the code with the MooTools library instead of jQuery.
  • You forgot # in the selector for the button.
  • You forgot a ); at the end of the $.each loop.

http://jsfiddle.net/Guffa/hd5qa/5/

Comments

0
$(myArray).each(function(index, element){
    element.hide();
});

you may wanna try something like this!

var myArray = [$blue, $red, $green, $black, $purple, $orange];

$('#myButton').click(function() {
    $(myArray).each(function(index, element) {
        $(element).hide();
    });

 });

You can see it running here: http://jsfiddle.net/hd5qa/3/

Comments

0

I prefer this way:

var elements = $("div");
var numOfElements = elemenets.length;
for(var i=0; i<numOfElements; i++) {
    var element = elements.eq(i);
    element.hide();
}

1 Comment

$(".div") would be under the assumption he gave the class 'div' to all his divs. i think you meant $('div') ... but i could be mistaken.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.