Diferencia entre jQuery.extend y jQuery.fn.extend?

Estoy intentando comprender la syntax del plugin jquery, porque quiero fusionar dos complementos en uno. La luz intermitente que también debe poder detener el intervalo o ejecutar varias veces.

De todos modos, esta syntax es lo mismo que

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); }); }, 

esta

 $.fn.blink = function(options) { 

porque parece que el primero (sin =) es una forma de establecer múltiples métodos a la vez. ¿Es esto correcto? También mientras estoy aquí ¿Cuál sería la razón para agregar los elementos y algo de lógica al objeto jquery?

 jQuery.extend({ timer: { global: [], guid: 1, dataKey: "jQuery.timer", 

(esto es del plugin del temporizador)

gracias, Richard

jQuery.extend se usa para extender cualquier objeto con funciones adicionales, pero jQuery.fn.extend se usa para extender el objeto jQuery.fn, que de hecho agrega varias funciones de complemento de una vez (en lugar de asignar cada función por separado).

jQuery.extend :

 var obj = { x: function() {} } jQuery.extend(obj, { y: function() {} }); // now obj is an object with functions x and y 

jQuery.fn.extend :

 jQuery.fn.extend( { x: function() {}, y: function() {} }); // creates 2 plugin functions (x and y) 
 jQuery.extend({ abc: function(){ alert('abc'); } }); 

uso: $.abc() . (No se requiere selector como $.ajax() )

 jQuery.fn.extend({ xyz: function(){ alert('xyz'); } }); 

uso: $('.selector').xyz() . (Se requiere un selector como $('#button').click() .)

Principalmente se usa para implementar $.fn.each() .

Espero que ayude.

Diferencia entre jQuery.extend y jQuery.fn.extend?

En realidad, no hay ninguno aparte de su referencia base. En la fuente jQuery , puede leer:

 jQuery.extend = jQuery.fn.extend = function() { … }; 

¿Entonces, cómo funciona? La documentación dice:

Combina el contenido de dos o más objetos en el primer objeto.

Es solo un for-in-loop que copia propiedades, copiado con una bandera para recrear objetos nesteds. Y otra característica:

Si solo se proporciona un argumento a $.extend() , esto significa que se omitió el argumento de destino

  // then the following will happen: target = this; 

Entonces, si la función es jQuery en jQuery (sin un objective explícito), extenderá el espacio de nombres de jQuery. Y si la función se llama en jQuery.fn (sin objective explícito), extenderá el objeto prototipo jQuery donde se encuentran todos los métodos (complementos).

Esta publicación del blog tiene una bonita descripción:

 $.fn.extend({ myMethod: function(){...} }); //jQuery("div").myMethod(); $.extend({ myMethod2: function(){...} }); //jQuery.myMethod2(); 

Citas:

Como regla general, debe extender el objeto jQuery para las funciones y el objeto jQuery.fn para los métodos. A una función, a diferencia de un método, no se accede directamente desde el DOM.

 $.fn.something= function{}; 

apunta al jQuery.prototype y permite acceder a los elementos dom a través de “this”. Ahora puede usar $(selector).something(); Entonces esto funciona como una función de complemento como $(selector).css();

 $.something = function{}; 

agrega una propiedad o función al objeto jQuery en sí mismo y no puede usar “this” para dom access Ahora puede usarlo como $.something() ; esto funciona como una función de utilidad como $.trim()

pero

 $.fn.extend({function1(), function2()}) and $.extend({function1(), function2()}) 

permite agregar más de 1 función al mismo tiempo. También se pueden usar para fusionar dos literales de objetos en caso de que proporcionemos más de un objeto.

    Intereting Posts