Первый быстрее:
$("ul li.item")
Это верно просто потому, что это эквивалентно, но не запускает двигатель селектора (Sizzle) дважды, чтобы попасть туда.
Для редактирования: Вы используете .filter()
... хорошо, когда вам нужно отфильтровать текущий набор или когда вам нужен сложный фильтр. Например, если вы хотите связать, но не выбираете набор снова:
$("ul li").addClass('everyItem').filter('.item').fadeOut();
Или сложный фильтр:
$("ul li").filter(function() {
return $.data(this, 'hasSomething');
}).fadeOut();
Существует много применений фильтра, это действительно зависит от ситуации, которая подходит лучше всего. Что касается вашего вопроса, то, однако, $(selector).filter(selector)
... Я не могу вспомнить случай, когда вы захотите сделать это с одним селектором, если это вообще возможно. Единственный случай с моей головы, который вы не можете сделать, это сложный :has()
и :not()
упаковка.