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


Intento entender la sintaxis del plugin jquery, porque quiero fusionar dos plugins en uno. La luz intermitente que también debe poder detener el intervalo o ejecutar varias veces.

De todas formas, es esta sintaxis 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 cierta lógica al objeto jquery?

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

(esto es del plugin del temporizador)

gracias, Richard


76
2018-01-02 09:48


origen


Respuestas:


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)

84
2018-01-02 09:53



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

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

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

uso: $('.selector').xyz(). (Selector requerido como $('#button').click().)

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

Espero que ayude.


64
2017-12-21 14:54



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

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

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

¿Entonces, cómo funciona? los documentación lee:

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 anidados. Y otra característica:

Si solo se proporciona un argumento para $.extend(), esto significa que el argumento de destino fue omitido

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

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


18
2018-02-11 20:04



Esta publicación de blog tener buena 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.


13
2018-03-13 12:10



$.fn.something= function{};

apunta al jQuery.prototype y permite acceder a los elementos dom a través de "this". Ahora puedes 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 acceso directo Ahora puedes 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.


7
2018-03-07 23:12