Способ доступа к массиву с объектами jQuery - PullRequest
0 голосов
/ 07 мая 2011

У меня есть массив, подобный следующему:

[jQuery('div#example1'), jQuery('div#example2'), jQuery('div#example3'), jQuery('div#etcetera')]

Цель

elementArray = [jQuery('div#example1'), jQuery('div#example2'), jQuery('div#example3'), jQuery('div#etcetera')];

$(elementArray).remove();

//or

$(elementArray).css('border', '1px solid red');

Я хочу, чтобы все они получили одинаковую обработку с некоторой функцией.Единственный способ получить доступ к элементам, который я знаю, - это циклически проходить по массиву.

Может ли кто-нибудь помочь мне с более эффективным способом решения этой проблемы?

Ответы [ 4 ]

1 голос
/ 07 мая 2011

Вот, пожалуйста:

$.each(elementArray, function(i, v) {
    v.remove();
});

При использовании $.each функция запускается для каждого элемента массива (на который ссылается v).

Демонстрация в реальном времени: http://jsfiddle.net/XyRZE/


Обновление: Вы можете использовать map, чтобы заменить каждый объект jQuery в массиве на объект элемента DOM, содержащийся в нем.

$(elementArray).map(function(i, v) { return v[0]; }).remove();

Демонстрационная версия: http://jsfiddle.net/XyRZE/1/

0 голосов
/ 07 мая 2011

Вот решение. То, как вы это сделали, хорошо, однако, если вы хотите использовать функцию, здесь у вас есть:

$(elementArray).each(function(){
   $(this).css('border', '1px solid red');
   //Do whatever you want in this function
});

Надеюсь, это поможет. Приветствия

0 голосов
/ 07 мая 2011

Вы можете нацелить несколько элементов в селекторе jquery.

См. jQuery множественный селектор api .

jQuery('#wallItem303, #wallItem303').remove();

Примечание: если у вас есть идентификатор, не используйте префиксс именем узла в селекторе.

0 голосов
/ 07 мая 2011

Может быть, вы могли бы выбрать все элементы в один массив jQuery

var myArray = $("div#wallItem303.wallItem, div#wallItem103.wallItem, div#wallItem323.wallItem");
myArray.css('border', '1px solid red');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...