Массив строк как селектор jQuery?
У меня есть массив строк, которые являются допустимыми селекторами jQuery (т.е. идентификаторами элементов на странице):
["#p1", "#p2", "#p3", "#p4", "#p5"]
Я хочу выбрать элементы с этими идентификаторами в массив jQuery. Это, наверное, элементарно, но я ничего не могу найти в Интернете. У меня мог бы быть цикл for, который создает строку "#p1,#p2,#p3,#p4,#p5"
, которая затем может быть передана jQuery в качестве одного селектора, но разве нет другого пути? Не существует способа передать массив строк в качестве селектора?
EDIT: На самом деле есть ответ уже там.
Ответы
Ответ 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()