163

Here's a snippet of the start of my code:

var myUpload = $("#upload_link").upload({bla bla bla

Basically what I'm trying to do is make the same call with a few different ID's...

I would have assumed this would work but it doesn't:

var myUpload = $("#upload_link,#upload_link2,#upload_link3").upload({

Any ideas?

2
  • What's the upload plugin you are using? Are you sure it follows the recommended plugin development pattern? Commented Aug 16, 2011 at 13:36
  • It should work, must be something with the upload function. jsfiddle.net/X7TAX Commented Aug 16, 2011 at 13:37

7 Answers 7

299

Try this:

$("#upload_link,#upload_link2,#upload_link3").each(function(){
    $(this).upload({
        //whateveryouwant
    });
});
Sign up to request clarification or add additional context in comments.

3 Comments

This answer will definitely work but ideally any plugin logic should apply to all the matched elements.
Is there any way to select like this $('#upload_*') ?
@HamidShoja $("*[id^='upload_']") should create an array with all elements starting with 'upload_'
45

If you give each of these instances a class you can use

$('.yourClass').upload()

Comments

38

You can use multiple id's the way you wrote:

$('#upload_link, #upload_link2, #upload_link3')

However, that doesn't mean that those ids exist within the DOM when you've executed your code. It also doesn't mean that upload is a legitimate function. It also doesn't mean that upload has been built in a way that allows for multiple elements in a selection.

upload is a custom jQuery plugin, so you'll have to show what's going on with upload for us to be able to help you.

Comments

15

Make sure upload plugin implements this.each in it so that it will execute the logic for all the matching elements. It should ideally work

$("#upload_link,#upload_link2,#upload_link3").upload(function(){ });

Comments

8

If all your elements starting with upload_ in its id have the same purpose or syntax you could try and use the following:

$("*[id^='upload_']").each(function() {
    $(this).upload()
});

This way you don't have to specify every single element in the selector.

Comments

5

it should. Typically that's how you do multiple selectors. Otherwise it may not like you trying to assign the return values of three uploads to the same var.

I would suggest using .each or maybe push the returns to an array rather than assigning them to that value.

Comments

1

That should work, you may need a space after the commas.

Also, the function you call afterwards must support an array of objects, and not just a singleton object.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.