18 votos

¿cómo funciona jquery encadenamiento de trabajo?

No estoy preguntando ¿qué es la sintaxis apropiada para el encadenamiento, sé que podría ser algo como:

$('myDiv').removeClass('off').addClass('on');

Sin embargo, yo soy muy curioso para entender el funcionamiento interno de la misma, por lo que yo sé de encadenamiento es una de las ventajas frente a otros famosos marcos, pero este nos mucho abstracción para un programador novato como yo, estoy seguro de que hay alguien por ahí que puede darme una explicación que me permite comprender cómo el encadenamiento de las obras.

Gracias!

17voto

user113716 Puntos143363

Si tienes un objeto con ciertos métodos, si cada método devuelve un objeto con métodos, usted puede simplemente llamar a un método del objeto devuelto.

var obj = {   // every method returns obj---------v
    first: function() { alert('first');   return obj; },
    second: function() { alert('second'); return obj; },
    third: function() { alert('third');   return obj; }
}

obj.first().second().third();

DEMO: http://jsfiddle.net/5kkCh/

16voto

Tejs Puntos23834

Todo lo que se está haciendo es devolver una referencia a this cuando el método de acabados. Tome este simple objeto, por ejemplo:

 var sampleObj = function()
 {
 };

 sampleObj.prototype.Foo = function()
 {
     return this;
 };

Usted podría cadena de estas llamadas todo el día porque devolver una referencia a this:

var obj = new sampleObj();
obj.Foo().Foo().Foo().Foo() // and so on

jQuery simplemente realiza una operación y devuelve this.

4voto

GSto Puntos13106
return $this;

cada jQuery función devuelve una instancia de la jQuery clase, que luego pueden tener métodos llamados. usted podría romper, y este código tendría el mismo efecto.

jQuery_obj = $('myDiv');
jQuery_obj = jQuery_obj.removeClass('off');
jQuery_obj = jQuery_obj.addClass('on');

3voto

Usman Puntos6151

En el encadenamiento de los padres de la función/método que devuelve un objeto que es utilizada por el niño de la función/método, y que las cosas de esa manera. En resumen, el jQuery o $ devuelve a sí mismo (un objeto) que permite el encadenamiento.

Es el mismo mecanismo por debajo de

var obj=$('input');    //returns jQuery object
var obj1=obj.val('a'); //returns jQuery object
var obj2=obj1.fadeOut();//returns jQuery object

Parece que esto si se hace con el encadenamiento de

$('input').val('a').fadeOut();

2voto

Daniel A. White Puntos91889

Básicamente, la primera llamada a la función $('myDiv') devuelve un objeto jQuery, entonces cada una de las siguientes llamada devuelve el mismo.

Vagamente,

var $ = function(selector) {
   return new jQuery(selector);
};

jQuery.prototype.removeClass = function(className) {
   // magic
   return this;
}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: