jQuery не делает, но существует возможность присвоения переменным в рамках Вашего выражения, и затем используйте многократное использование тех в последующих выражениях. Так, кэшируйте-ifying свой пример...
if ((cached = $("#navbar .heading")).text() > "") {
cached.hide();
}
Оборотная сторона - он, делает код небольшим fuglier и трудный к grok.
Это не так вопрос, 'делает это?', но 'может он?', и не, это не может - Вы, возможно, добавили дополнительные элементы соответствия к DOM, так как запрос был в последний раз выполнен. Это сделало бы кэшируемый результат устаревшим, и jQuery не будет иметь никакого (разумного) способа сказать кроме выполнения запроса снова.
, Например:
$('#someid .someclass').show();
$('#someid').append('<div class="someclass">New!</div>');
$('#someid .someclass').hide();
В этом примере, недавно добавленный элемент не был бы скрыт, если бы было какое-либо кэширование запроса то - это скрыло бы только элементы, которые были показаны ранее.
Я не думаю, что это делает (хотя я не испытываю желание прочитывать три с половиной тысячи строк JavaScript в данный момент для обнаружения наверняка).
Однако тому, что Вы делаете, не нужны несколько селекторов - это должно работать:
$("#navbar .heading:not(:empty)").hide();
я не полагаю, что jQuery делает любое кэширование селекторов, вместо этого полагаясь xpath/javascript внизу для обработки этого. это сказанное, существует много оптимизации, которую можно использовать в селекторах. вот несколько статей, которые касаются некоторых основ: