Пустая функция для сохранения цепочек jquery

Есть ли (может быть, недокументированный) заполнитель как $.noop для использования в конкатенациях jQuery?

Использовать что-то вроде следующего:

$('selector')[true ? 'method' : '<function that does nothing>']().doSomething();

Я много пробовал и закончил с этим:

$.fn.noop = function(){ return this; };

Но, может быть, в ядре jQuery уже есть такая функция?

1 ответ

Решение

Вариант первый:

использование $.fn.splice, Он есть и всегда присутствует, но он также недокументирован (поэтому он может отсутствовать в будущем), не читается и не требует аргументов.

Вариант второй:

$.fn.noop = function(){return this}, Надежный, читаемый, предсказуемый, быстрый. Единственной причиной, по которой стоит отдавать предпочтение №1, является время разработки.

Вариант третий (предпочтительный вариант): используйте плагин для условных выражений, которые являются единственной причиной, по которой вам нужен запрет на цепочку, например плагин Iff от Ben Alman (или напишите свой собственный).

Pro: повороты

 ... [condition?'method':'noop']() ...

в:

 ... .iff(condition).method().end() ...

То есть он более читабелен, чем №2, и вы не ограничены одним вызовом. Вы даже можете пройти через iff или вложите свои условные выражения, пока вы правильно раскручиваете стек.

Минусы: это плагин, и вам нужно его получить; он требует, чтобы методы, которые вы вызываете, были пустыми при работе с пустой коллекцией. Все стандартные функции jQuery (кроме add) являются.

Другие вопросы по тегам