, Сохранение объекта jQuery к переменной позволяет Вам снова использовать его, не имея необходимость искать назад через DOM для нахождения его.
(Как @Louis предложенный, я теперь использую $, чтобы указать, что переменная содержит объект jQuery.)
// Bad: searching the DOM multiple times for the same elements
$('div.foo').each...
$('div.foo').each...
// Better: saving that search for re-use
var $foos = $('div.foo');
$foos.each...
$foos.each...
Как более сложный пример, скажите, что у Вас есть список продуктов в хранилище, и Вы хотите показать только тем, которые соответствуют критериям пользователя. У Вас есть форма с флажками, каждый содержащий критерии. Флажки имеют имена как organic
и lowfat
, и продукты имеют соответствующие классы - .organic
, и т.д.
var $allFoods, $matchingFoods;
$allFoods = $('div.food');
Теперь можно продолжать работать с тем объектом jQuery. Каждый раз флажок нажат (чтобы проверить или снять флажок), начать с основного списка продуктов и отфильтровать на основе установленных флажков:
// Whenever a checkbox in the form is clicked (to check or uncheck)...
$someForm.find('input:checkbox').click(function(){
// Start out assuming all foods should be showing
// (in case a checkbox was just unchecked)
var $matchingFoods = $allFoods;
// Go through all the checked boxes and keep only the foods with
// a matching class
this.closest('form').find("input:checked").each(function() {
$matchingFoods = $matchingFoods.filter("." + $(this).attr("name"));
});
// Hide any foods that don't match the criteria
$allFoods.not($matchingFoods).hide();
});
Лучший способ - предоставить ключ управления версиями при создании ключа кэша памяти. Мы делаем это, предоставляя единственную функцию / метод для создания ключа в нашей системе.
$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);
makeKey ()
использует информацию в массиве cacheKeyVersions и возвращает:
5:monkeyInfo:123:456
Обратите внимание на цифру «5» в начале. Это происходит из жестко запрограммированного массива keyNames => версий. Поэтому, если мы хотим аннулировать КАЖДОЕ значение кеша monkeyInfo в системе, нам просто нужно изменить это число на 6 в массиве. С этого момента тот же вызов будет искать
6:monkeyInfo:123:456
Вот пример того, как может выглядеть массив версий ключа. Вызов ' makeKey ()
' просто просматривает этот массив, чтобы получить номер версии для любого заданного ключа.
$cacheKeyVersions = array(
'monkeyInfo' => 5,
'zebraInfo' => 2
);
Вы можете делать все, что угодно, чтобы реализация соответствовала вашим потребностям, но это '
memcached не поддерживает удаление в пространстве имен.
В официальной вики-странице есть предложение, как обойти это: