Я разрабатываю небольшой фреймворк для внутреннего использования в нашей компании.В некоторых случаях наша среда перезаписывает базовые функциональные возможности jQuery для обработки внутренней логики или исправления ошибок браузера и т. Д. Я хочу, чтобы эти случаи были полностью прозрачными для наших разработчиков, чтобы они могли просто продолжать использовать jQuery так, как они привыкли.
Я столкнулся с проблемой, которую, похоже, не могу заставить себя думать прозрачным образом - по крайней мере, я не могу придумать хороший способ сделать это - поэтому я обращаюсь к вам:).
Я хочу перезаписать jQuery таким образом, чтобы я мог выполнять определенный фрагмент кода каждый раз, когда что-то «становится видимым».Например, если разработчик запускает метод show (), я хочу выполнить свой код после того, как элемент станет видимым.Фактически, независимо от того, как разработчик «делает элемент видимым» (например, show (), css (), animate () и т. Д.), Я хочу, чтобы мой код выполнялся
Я знаю, что, например, show () имеетпараметр «обратного вызова», который можно использовать только для этого.Но дело в том;это должно быть полностью прозрачно для разработчика.Ему не нужно знать, что этот код «выполняется под».
Все мои перезаписи выполняются с использованием замыканий, поэтому я могу сохранить ссылку на оригинальный метод, выполнить свою задачу и выполнить оригинальный.Вот пример того, как я делаю это с помощью метода show:
(function ($) {
var originalShowMethod = jQuery.fn.show;
jQuery.fn.show = function (speed, easing, callback) {
// Do stuff before
var theReturn = jQuery(originalShowMethod.call(this, speed, easing, callback));
// Do stuff after
return theReturn;
};
})(jQuery);
Мой первоначальный подход состоял в том, чтобы просто сделать это таким образом (запустить мой код в «// Делать вещи после»).Это также прекрасно работает, за исключением случаев, когда вы передаете параметр скорости (потому что тогда он использует что-то вроде setTimeout или setInterval для внутреннего использования) или использует один из других методов «показать элемент».
Есть ли в jQuery какой-нибудь мастер-метод «показать элемент», который я могу перезаписать, чтобы мой метод использовал все методы, имеющие отношение к «показу элементов»?Или я должен перезаписать все "методы показа"?Кто-нибудь может привести пример того, как я могу выполнить эту задачу?и что мне нужно перезаписать, если это способ сделать это.
Заранее спасибо.