Скрыть кешированные объекты в jQuery - PullRequest
2 голосов
/ 23 марта 2011

Я не уверен, что "кэшированный" является правильным термином для этого. Может быть, я должен использовать вместо этого «экземпляр». Однако, скажем, я хочу «кэшировать» несколько объектов, чтобы сэкономить некоторые ресурсы:

var $foo = $("#foo"),
$bar = $("#bar");

Теперь, если я хочу скрыть их, могу ли я использовать однострочник вместо:

$foo.hide();
$bar.hide();

Я считаю, что это довольно просто (читай: "глупо"), но эй ... Я не могу понять это сам ...

Ответы [ 5 ]

4 голосов
/ 23 марта 2011

Вы также можете использовать .add(), чтобы свернуть набор объектов и селекторов jQuery:

$foo.add( $bar ).add('.someclass').add( $other_objects_or_selectors ).hide();
1 голос
/ 23 марта 2011

вы можете использовать что-то вроде этого:

$.each([$foo, $bar], function(i, v) { 
  v.hide(); 
});
0 голосов
/ 23 марта 2011

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

$('#foo').addClass('toHide'); 
//Later
$('.toHide').filter(':visible').hide();
0 голосов
/ 23 марта 2011

Если вы делаете это для многих идентификаторов, возможно, сделайте что-то вроде:

items = ['foo', 'bar'];
cache = {};
$.each(items, function(i,key) {
    cache[key] = $('#' + key);
    cache[key].hide();
});

Затем в дальнейшем получите доступ к «кешу», как cache['foo'].

0 голосов
/ 23 марта 2011

В jQuery может быть несколько селекторов, разделенных запятой:

$("#foo, #bar").hide();
...