2010-04-25 12 views
5

¿Cómo puedo crear una función que se parece a la devolución de llamada jquery $¿Cómo crear una función propia de jQuery en JavaScript?

Digamos que quiero llamar a un elemento con id = "mydiv".

Quiero ser capaz de llamar así

var div = $("mydiv").value; 

creo que la función debe ser similar

function $(element) 
{ 
    return document.getElementById(element); 
} 

Es que la forma correcta de hacerlo, o prefiere otra forma de ¿resuélvelo?

+13

Entonces, Bob viene a mirar un código que ha aterrizado en su regazo y descubre que está usando una función '$'. "% $ @ £%!", Suspira, "¿Es esto jQuery? No. ¿Quizás prototype.js está ahí en alguna parte? Oh, es una rutina personalizada. ¿Por qué la gente no puede dar nombres útiles a sus variables?" – Quentin

+2

omg acaba de usar jQuery ya. –

+0

Nombre la función como getElem ("id") si desea acortar document.getElementById ("id"). Escribí algo así antes y agregué un parámetro de contexto opcional para iframes, etc. getElem ("id", context). Esto fue antes de que descubriera jQuery. Usar $ sería simplemente confuso para cualquier persona que lea su código. –

Respuesta

9

Puede hacerlo de tres maneras:

ámbito local:

function $(element) 
{ 
    return document.getElementById(element); 
} 

o

var $ = function(element) 
{ 
    return document.getElementById(element); 
} 

o si es necesario definir en ámbito global :

window.$ = function(element) 
{ 
    return document.getElementById(element); 
} 

Si ha incluido jQuery, la definición de $ en el ámbito global lo anulará. Use jQuery.noConflict para evitar esto.

-1

jQuery realmente devuelve un objeto personalizado para que pueda llamar a $ ('# id'). AlgunaJqueryFunction(). Si simplemente desea un acceso directo para document.getElementById,

var $ = document.getElementById; 

debería ser suficiente.

+3

Fallará en muchos navegadores. Recuerde que cuando extrae un método de un objeto y luego lo llama desde la referencia ahora no vinculada, 'this' no se establecerá. Entonces, al llamar '$' no pasará el objeto 'document' correcto a la función' getElementById'. – bobince

Cuestiones relacionadas