Разница между jQuery.расширить и jQuery.сноска.продлить?
Я пытаюсь понять синтаксис плагина jquery, потому что я хочу объединить два плагина в один. Мигалка, которая также должна быть в состоянии остановить интервал de или запустить несколько раз.
в любом случае, является ли этот синтаксис таким же, как
jQuery.fn.extend({
everyTime: function(interval, label, fn, times) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, times);
});
},
oneTime: function(interval, label, fn) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, 1);
});
},
этой
$.fn.blink = function(options)
{
потому что это выглядит как первый(Без =) это способ установить несколько методов сразу. Это правда? Также пока я здесь Что было бы причиной добавить элементы и некоторые логика для объекта jquery?
jQuery.extend({
timer: {
global: [],
guid: 1,
dataKey: "jQuery.timer",
(это из плагина таймера)
- спасибо, Ричард
5 ответов:
jQuery.extend используется для расширения любого объекта с дополнительными функциями, но jQuery.сноска.extend используется для расширения jQuery.объект fn, который фактически добавляет несколько функций плагина за один раз (вместо того, чтобы назначать каждую функцию отдельно).
jQuery.расширить:
var obj = { x: function() {} } jQuery.extend(obj, { y: function() {} }); // now obj is an object with functions x and y
jQuery.сноска.расширить:
jQuery.fn.extend( { x: function() {}, y: function() {} }); // creates 2 plugin functions (x and y)
jQuery.extend({ abc: function(){ alert('abc'); } });
использование:
$.abc()
. (Селектор не требуется, как$.ajax()
.)jQuery.fn.extend({ xyz: function(){ alert('xyz'); } });
использование:
$('.selector').xyz()
. (Селектор требуется как$('#button').click()
.)в основном он используется для реализации
$.fn.each()
.Я надеюсь, что это помогает.
разница между jQuery.расширить и jQuery.сноска.продлить?
на самом деле, нет ничего, кроме их базовой ссылки. В источник jQuery, вы можете узнать:
jQuery.extend = jQuery.fn.extend = function() { … };
так как же это работает? Элемент документация гласит:
сливается содержимое двух или более объектов вместе в первый объект.
это просто for-in-loop, который копирует свойства, pimped up with a флаг для рекурсии вложенных объектов. И еще одна особенность:
если только один аргумент, поставляемые в
$.extend()
, это означает, что целевой аргумент был опущен// then the following will happen: target = this;
так что если функция вызывается на
jQuery
сам (без явной цели), он будет расширять пространство имен jQuery. И если функция вызывается наjQuery.fn
(без явной цели), он будет расширять объект прототипа jQuery, где расположены все методы (плагин).
этот блог есть хорошее описание:
$.fn.extend({ myMethod: function(){...} }); //jQuery("div").myMethod(); $.extend({ myMethod2: function(){...} }); //jQuery.myMethod2();
цитаты:
как правило, вы должны расширить объект jQuery для функций и jQuery.объект Fn для методов. Функция, в отличие от метода, не доступна непосредственно из DOM.
$.fn.something= function{};
указывает на jQuery.прототип и позволяет получить доступ к элементам dom через "это". Теперь вы можете использовать
$(selector).something();
Так что это работает как функция плагина, как$(selector).css();
$.something = function{};
добавляет свойство или функцию к самому объекту jQuery, и u не может использовать "это" для доступа dom Теперь вы можете использовать его как
$.something()
; это работает как функция полезности как$.trim()
но
$.fn.extend({function1(), function2()}) and $.extend({function1(), function2()})
позволяет добавлять более 1 функции одновременно.Также их можно использовать для слияния двух объектные литералы в случае, если мы предоставляем более одного объекта.