jQuery Multiple ID selectors

JavascriptJquery

Javascript Problem Overview


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?

Javascript Solutions


Solution 1 - Javascript

Try this:

$("#upload_link,#upload_link2,#upload_link3").each(function(){
    $(this).upload({
        //whateveryouwant
    });
});

Solution 2 - Javascript

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

$('.yourClass').upload()

Solution 3 - Javascript

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.

Solution 4 - Javascript

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(){ });

Solution 5 - Javascript

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.

Solution 6 - Javascript

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.

Solution 7 - Javascript

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionWebbyView Question on Stackoverflow
Solution 1 - Javascriptuser657496View Answer on Stackoverflow
Solution 2 - JavascripttonycouplandView Answer on Stackoverflow
Solution 3 - JavascriptzzzzBovView Answer on Stackoverflow
Solution 4 - JavascriptShankarSangoliView Answer on Stackoverflow
Solution 5 - JavascriptJoseph MarikleView Answer on Stackoverflow
Solution 6 - JavascriptJeremy HolovacsView Answer on Stackoverflow
Solution 7 - JavascriptThomas SchefferView Answer on Stackoverflow