2010-10-15 7 views
12

Soy nuevo en el prototipo de marco y estoy intentando algo realmente simple y fallido. Estoy tratando de responder a un evento de clic en un botón como el siguiente:Prototipo: haga clic en evento por nombre de clase de elemento

$$('.btn').observe('click', respond); 
function respond(event) { 
    alert("hello"); 
} 

¿Por qué no funciona? ¡Por favor ayuda!

Respuesta

21

A diferencia de jQuery, la entrega de selectores con resultados múltiples en Prototype funciona de forma un poco diferente. Debe manejar cada resultado seleccionado por separado usando .each().

$$('.btn').each(function(element) { 
    element.observe('click', respond); 
}) 

Esta es una de las razones por las que me mudé a jQuery. La otra razón: saber que jQuery es comercializable y saber que Prototype no lo es.

+1

Eso es simplemente estúpida. Gracias. Soy de origen y me veo obligado a usar un prototipo para un proyecto ascendente: por lo que he visto, está muy por detrás de jquery en cuanto a la manipulación dom – David

+0

Además, ¡esto no se menciona en la documentación por lo que puedo ver! – David

+0

No diría que está a millas de distancia. Puede hacer todas las mismas cosas, pero no de una manera tan concisa como jQuery. Trabajé con él antes de que jQuery saliera al mercado. En aquel entonces era, con mucho, la mejor opción. Pero, sí, hacer cosas con jQuery es mucho más fácil. –

12

también se puede hacer con un solo revestimiento, como alguien ya se sugirió en un comentario:

$$('.btn').invoke('observe', 'click', respond); 
Cuestiones relacionadas