Я пытаюсь перенести некоторые общие действия, специфичные для приложения, в плагин jQuery следующим образом:
$.fn.extpoint = function() {...}
Но я не хочу объявлять несколько точек расширения:
$.fn.extpoint1 = function() {...}
$.fn.extpoint2 = function() {...}
...
Вместо этого я хотел бы использовать синтаксический сахар, например:
$("#id").extpoint.func1().extpoint.func2()
С определением:
$.fn.extpoint = {}
$.fn.extpoint.func1 = function() {
this.val();
this.data("ip");
...
return this;
}
и позвоните:
$("#id").extpoint.func1(...)
this
указывает на $.fn.extpoint
(словарь с элементами func1
, func2
,...) вместо исходного объекта jQuery, когда оценивается func1
.
Можно ли сделать подключаемый модуль jQuery расширяемым?
ПС. Можно передать имя функции в качестве первого аргумента $.fn.extpoint
и реализовать вызов $.fn.extpoint('extend', func)
для расширения (сохранения во внутреннем словаре связи между именами и реализациями) точки расширения. В этом случае варианты использования выглядят так:
$("#id").extpoint('func1', ...).extpoint('func2', ...)
но я ищу способ сделать больше синтаксического сахара...
$("#id").extpoint.func1().extpoint.func2()
, потому что func1 и func2 не будут иметь доступа к$("#id")
- person Kevin B   schedule 13.03.2013