2014-11-26 3 views
0

Я пытаюсь сохранить объект Jquery в массив и позже получить доступ к методам Jquery.Сохранить объект JQuery и получить доступ позже?

Что-то вроде:

var myArr = []; 
myArr.push($('div#id1')); 
myArr.push($('div#id2')); 
$(myArr).show(); 

Это не работает

+0

Начнем с того, что регистрируется, если вы добавите 'console.log (myArr)' чуть выше линии .Show()? –

ответ

0

Если вы настаиваете на хранение своих объектов JQuery в массиве, вам нужно будет отобразить этот массив на новый объект JQuery прежде чем он сможет вызвать методы JQuery на нее, чтобы повлиять на ваши сохраненные объекты.

Вы можете использовать .map() JQuery в для этого:

var myArr = []; 
myArr.push($('div#id1')); 
myArr.push($('div#id2')); 

$(myArr).map(function(){ return this.toArray(); }).show(); 

JSFiddle

+0

Это то, что я ищу. Благодаря! – Aryan

+0

Почему проголосовали? – George

+0

Я этого не делал. Не знаете, кто это? – Aryan

1

Вы пытаетесь выполнить метод show на массив передается jQuery, а не по каждому объекту, попробовать что-то вроде этого:

$.each(myArr, function(k, elem) { 
    $(elem).show(); 
}) 
0

Почему вы храните элементы в массиве для начала? Если вам нужно только для выполнения операций над несколькими деталями, то вы можете просто сделать одно из следующих действий:

$('selector1, selector2').operation(); 
$('selector1').add('selector2').operation(); 
0

Другой путь, все JQueried ^^:

var myElements = $('div#id1'); 
myElements = myElements.add('div#id2'); 

myElements.show(); 

Для реверсирования .Add() вы можете использовать .not:

myElements = myElements.not('.clazz'); 

myElements.hide(); 
Смежные вопросы