remove first child jquery api method-signature

first - jquery remove



¿Por qué los argumentos de devolución de llamada de jQuery son inconsistentes? (5)

Como Javascript le permite ignorar los parámetros que no está utilizando (es decir, puede definir una función de devolución de llamada que toma solo un parámetro, incluso si se llamará con dos), generalmente, el primer parámetro es el que más probabilidades tiene de estar usando. (En realidad, this es, en general, el elemento de datos que es más probable que use, seguido del primer parámetro, etc.)

Un patrón común dentro de jQuery es un método que toma una devolución de llamada a la que se le pasa un elemento de una matriz y su índice dentro de dicha matriz. Sin embargo, parece completamente aleatorio qué argumento es lo primero. Por ejemplo, desde los documentos de jQuery en http://api.jquery.com :

  • jQuery.each( collection, callback(indexInArray, valueOfElement) )
  • .each( function(index, Element) )
  • jQuery.map( array, callback(elementOfArray, indexInArray) )
  • .map( callback(index, domElement) )
  • jQuery.grep( array, function(elementOfArray, indexInArray), [ invert ] )
  • .filter( function(index) )

En tres casos ( jQuery.each , .each , .map ), el índice es lo primero. En los otros dos ( jQuery.grep , jQuery.map ), el elemento es lo primero. Sé que la API ya está configurada, pero me parece una gran incoherencia.

¿Hay algún patrón que me falta o es solo aleatorio? ¿Debería solucionarse esto o debería callarlos y memorizarlos?


De acuerdo con https://learn.jquery.com/using-jquery-core/iterating/

Una palabra de advertencia: $.map() cambia el orden de los argumentos de devolución de llamada [en comparación con $().map , $each() y $().each() ]. Esto se hizo para hacer coincidir el método JavaScript nativo .map() disponible en ECMAScript 5.


En mi humilde opinión, $.map y $.grep comportan como métodos de clase en Ruby , porque:

  • toman la matriz objetivo como primer argumento.
  • el orden de los argumentos de devolución de llamada es consistente con Ruby ( each_with_index )

Esa es solo mi mnemotécnica personal por mi experiencia Ruby.

Los otros métodos son algo así como el legado de jQuery y no es fácil de "arreglar", aunque todavía me gustaría que haya una solución, porque ya sucedió que jQuery no es lo último , así que ¿qué no es posible?


Eso también me frustra a veces - $.each uno es el que siempre $.each .

Creo que se debe a diferentes personas / equipos que trabajan en diferentes partes del marco. Es un marco impulsado por la comunidad, por lo que es probable que nadie lo descubriera desde el principio y, ahora que el marco está muy extendido, no pueden solucionarlo sin romper el 35% de todos los sitios en Internet.

No creo que se solucione, al menos esa es mi opinión / actitud. ¡Voy a tener que confiarlos a la memoria y esperar lo mejor!


No es totalmente aleatorio. Porque :

$.map( $(''selector''), function(el, index) { /* element (DOMElement) is first, index optional */ } ); $(''selector'').map(function(index) { /* ''this'' (DOMElement) is first.... index optional */ });

Ver el patrón? El segundo ejemplo tiene un segundo argumento, pero solo se pasa por conveniencia, y es el mismo que this .

El patrón es que el primer argumento siempre es "más" importante que el segundo, y el último argumento debe ser el menos importante (el "más opcional"). Por lo tanto, no necesita especificar todos los argumentos menos importantes si solo necesita uno. Y en el caso de $(...).each , a menudo ni siquiera necesitarás ningún argumento, porque this es solo lo que quieres.