2010-08-01 10 views
22

Soy un principiante en JQuery.

¿Cuándo se debe usar el punto después de $?

$.trim(str) y no $trim(str)?

Y algunos casos sin punto: $(document).ready, pero no $.(document).ready?

Gracias.

+4

Respuesta breve: el signo de dólar generalmente será seguido inmediatamente por paréntesis, o por un punto y un nombre de método. Por supuesto, definitivamente deberías tratar de aprender el lenguaje JavaScript para que entiendas qué significan realmente todos los puntos y paréntesis :) – Martin

Respuesta

18

No creo que tenga otra opción, solo una sintaxis es correcta y realmente funcionará. El símbolo $ no es más que una notación abreviada para la función jQuery, por lo que al escribir:

$('some selector') 

Usted está llamando a una función, llamada jQuery, y pasando una cadena, o en su caso, eres pasando en el objeto document.

Cuando se trata de la invocación de un método, tal como un método de ayuda como el recorte, que tendrá que utilizar la siguiente sintaxis, ya sea jQuery.trim() o $.trim(). Es fácil comprobar usted mismo, simplemente probar esto:

typeof($.trim) //returns "function" 
typeof($trim) //returns "undefined" 
+4

... y el ['typeof'] (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/typeof_Operator) el operador no necesita paréntesis, ni un punto. ;-) –

3

Cuando se está accediendo el método estático de jQuery que no está disponible en el prototipo de, por ejemplo, un elemento DOM. trim es un método estático expuesto por la API.

No hay $.fn.trim y no podemos confiar confiadamente en String.prototype.trim ya que los métodos pueden diferir.

En relación con $trim que no está definido. El trim es un método de $ que es jQuery. Puede hacer $['trim'] o $.trim, y esa debería ser la única forma de acceder a ella.

19

En jQuery, $ es un nombre de variable, como foo o bar, que hace referencia al objeto jQuery global. Si desea acceder a una propiedad en el objeto jQuery, use el punto. Estos son básicamente los mismos:

$.property 
jQuery.property 

(Desde $ es una variable como cualquier otro, es posible para usted para fijar a cualquier cosa que le guste esto podría suceder si se va a incluir la biblioteca Prototype después de incluir el. jQuery library, que te dejaría con $ apuntando a un alias de la función document.getElementById.)

El objeto jQuery pasa a ser también una función, por lo que se puede llamar a esa función el mismo que puedes llamar a cualquier otra función:

$(arguments) 
alert("arguments!") 

Por otro lado, $trim es más que otra variable global, como $ o location, lo que podría ser una función que ha definido a sí mismo:

var $trim = function(arguments) { 
    return "foo"; 
}; 

$trim(str) 
+1

+1 la mejor respuesta – CodyBugstein

2

La sintaxis $.foo significa que $ está siendo tratado como un objeto con una campo llamado foo, que normalmente es una función que está llamando. Así que esto no es realmente nada diferente de una función independiente llamada foo - solo está prefijada con $. para distinguirla de cualquier otra función y asociarla a la biblioteca jQuery.

Cuando utiliza $(something).foo, está pasando something a la función jQuery, y el resultado depende de lo que está pasando (podría ser un selector para encontrar un objeto existente, o podría ser un fragmento de HTML para compilar un nuevo objeto, o podría ser una función que se registrará para ejecutarse en la carga de la página). En cualquier caso, está llamando al foo en el objeto devuelto resultante, que puede aplicarse a varios objetos DOM si el selector que pasó identifica una clase, por ejemplo.

La primera sintaxis se usa cuando la función jQuery funciona en algo que no sean objetos DOM (partes de la página HTML). Por ejemplo, una cadena ($.trim) o una matriz ($.each). Esos no son elementos de la página, solo son datos puros en JavaScript.

La segunda sintaxis se usa cuando se trabaja con elementos DOM: utiliza $(something) para crear un objeto jQuery, que es un contenedor de cero o más elementos DOM. A continuación, llama a funciones en el contenedor devuelto para manipular convenientemente los objetos que envuelve.

Cuestiones relacionadas