Пустая функция для сохранения цепочек 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
) являются.