Селекторы нескольких идентификаторов jQuery

121

Вот фрагмент начала моего кода:

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

По сути, я пытаюсь сделать один и тот же вызов с несколькими разными идентификаторами ...

Я бы предположил, что это сработает, но это не так:

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

Любые идеи?

Webby
источник
Какой плагин загрузки вы используете? Вы уверены, что он соответствует рекомендуемому шаблону разработки плагинов?
bfavaretto
Должно работать, должно быть что-то с uploadфункцией. jsfiddle.net/X7TAX
Кокос

Ответы:

230

Попробуй это:

$("#upload_link,#upload_link2,#upload_link3").each(function(){
    $(this).upload({
        //whateveryouwant
    });
});
rsplak
источник
3
Этот ответ определенно сработает, но в идеале любая логика плагина должна применяться ко всем согласованным элементам.
ShankarSangoli
39

Если вы дадите каждому из этих экземпляров класс, вы можете использовать

$('.yourClass').upload()
tonycoupland
источник
19

Вы можете использовать несколько idтак, как написали:

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

Однако это не означает, что эти идентификаторы существуют в DOM, когда вы выполняете свой код. Это также не означает, что uploadэто законная функция. Это также не означает, что uploadон был построен таким образом, что позволяет использовать несколько элементов в выборе.

upload- это настраиваемый плагин jQuery, поэтому вам нужно будет показать, что с ним происходит, uploadчтобы мы могли вам помочь.

zzzzBov
источник
9

Убедитесь, что uploadплагин реализует this.eachего, чтобы он выполнял логику для всех совпадающих элементов. В идеале должно работать

$("#upload_link,#upload_link2,#upload_link3").upload(function(){ });
ShankarSangoli
источник
4

должно. Обычно так вы делаете несколько селекторов. В противном случае вам может не понравиться попытка присвоить возвращаемые значения трех загрузок одной и той же переменной.

Я бы посоветовал использовать .eachили, возможно, передать результаты в массив, а не присваивать их этому значению.

Джозеф Марикл
источник
0

Это должно сработать, вам может понадобиться пробел после запятых.

Кроме того, функция, которую вы вызываете позже, должна поддерживать массив объектов, а не только одноэлементный объект.

Джереми Головач
источник