Подтвердить что ты не робот

Массив строк как селектор jQuery?

У меня есть массив строк, которые являются допустимыми селекторами jQuery (т.е. идентификаторами элементов на странице):

["#p1", "#p2", "#p3", "#p4", "#p5"]

Я хочу выбрать элементы с этими идентификаторами в массив jQuery. Это, наверное, элементарно, но я ничего не могу найти в Интернете. У меня мог бы быть цикл for, который создает строку "#p1,#p2,#p3,#p4,#p5", которая затем может быть передана jQuery в качестве одного селектора, но разве нет другого пути? Не существует способа передать массив строк в качестве селектора?

EDIT: На самом деле есть ответ уже там.

4b9b3361

Ответ 1

Ну, там 'join':

["#p1", "#p2", "#p3", "#p4", "#p5"].join(", ")

EDIT - Дополнительная информация:

Можно выбрать массив элементов, проблема в том, что у вас еще нет элементов, только селекторные строки. Любой способ, которым вы разрезаете это, вам нужно выполнить поиск типа .getElementById или использовать фактический выбор jQuery.

Ответ 2

Попробуйте метод Array.join:

var a = ["#p1", "#p2", "#p3", "#p4", "#p5"];
var s = a.join(", ");
//s should now be "#p1, #p2, #p3, ..."
$(s).whateverYouWant();

Ответ 3

Как насчет $(foo.join(", "))?

Ответ 4

Используйте метод array.join для их объединения

$(theArray.join(','));

Ответ 5

Я думаю, что вы ищете join.

var arr = ["#p1", "#p2", "#p3", "#p4", "#p5"];
$(arr.join(","))

Ответ 6

Собираюсь официально ответить на ваш вопрос: с однострочником:

//If this is only one use variable you can use
$(['#p1','#p2','#p3','#p4','#p5'].join(',')).methodToUse();
//if you DO need it as a variable you can
var joined = ['#p1','#p2','#p3','#p4','#p5'].join(',');
$(joined).methodsToUse();

Если вы хотите, чтобы они что-то делали по отдельности, есть также .each();

В приведенном ниже примере каждый щелчок pds делает любой из них красным:

var peas = ['#p1','#p2','#p3','#p4','#p5'];
$.each(peas, function(i){
    $(peas[i]).click( function(){
        $(peas[i]).css({'color':'red'});
    });
});

Когда вы добавляете 'i' в параметр функции, он находит значения внутри массивов соответствующим образом. Когда вы делаете '.each()', формат выглядит следующим образом:

$.each(array, function(i){
    // any code you wish as long as you have an array selector
    //$(array[i]).whatever function
});

Еще больший пример. Скажем, вы хотите, чтобы P нажимал на красный, но хотел, чтобы другие p возвращали цвет по умолчанию. Просто сделайте массив nonPea и вуаля!

var peas = ['#p1','#p2','#p3','#p4','#p5']
,   nonPeas = ['#p5, #p2, #p3, #p4'
              ,'#p1, #p5, #p3, #p4'
              ,'#p1, #p2, #p5, #p4'
              ,'#p1, #p2, #p3, #p5'
              ,'#p1, #p2, #p3, #p4']
;
$.each(peas, function(i){
    $(peas[i]).click( function(){
        $(peas[i]).css({'color':'red'});
        $(nonPeas[i]).css({'color':'black'});
    });
});

Я знаю, что кто-то должен знать о каждом массиве значений как селекторы jquery. Надеюсь, что все идет хорошо!

Источник:    jQuery.each()   Скрипка в действии (с обновлениями!)

Ответ 7

Короче:

["#p1", "#p2", "#p3", "#p4", "#p5"].toArray()