¿Event.observe solo funciona con documentos y no con identificaciones específicas?

Tengo una página donde estoy aprendiendo js prototipo y pasando un tiempo con Event.observe. Mi problema es que esto funciona si hago clic en cualquier parte del documento:

Event.observe(document, 'click', respondToClick);

function respondToClick() {
  alert("Test...");
}

Pero quiero hacer varias funciones de Event.observe para diferentes ID, así que hice esto:

Event.observe('foo', 'click', respondToClick);

function respondToClick() {
  alert("Test...");
}

ahora foo es solo una fila que se ve así:

<tr id="foo">
                <th>Row Title</th>

                <th>Open/Close</th>
            </tr>

Pero cuando hago clic en la fila, no activa el cuadro de alerta. He intentado demasiadas cosas y ahora estoy pidiendo ayuda. ¿Alguna idea de por qué elementos específicos no generarán la alerta?

preguntado el 03 de mayo de 12 a las 15:05

2 Respuestas

O puedes probar esto

Event.observe($('foo'), 'click', respondToClick); 

or

 $("foo").observe('click', respondToClick);

Referencia: http://api.prototypejs.org/dom/Event/observe/

Verlo en acción

http://plugins.amiwithyou.com/sof/event.htm

contestado el 03 de mayo de 12 a las 16:05

De acuerdo con los documentos a los que se vincula, Event.observe("foo", "click", respondToClick) aunque también debería funcionar. El problema puede venir de otra cosa. - Frederic Hamidi

Algo debe estar mal porque nada de eso funciona... Leí la documentación e hice un ejemplo exacto en mi página pero no funcionará. Pero si llamo document, funciona bien... - Paxwell

En mi caso está funcionando. Por favor, míralo en plugins.amiwithyou.com/sof/event.htm - Nazmul

@FrédéricHamidi, "foo" es la identificación del elemento, no el elemento en sí. Por lo tanto, $("foo") o document.getElementById("foo") deberían funcionar. - Nazmul

@Hoque, efectivamente, solo decía eso Event.observe() admite una identificación de elemento como su primer argumento, de acuerdo con la documentación. - Frederic Hamidi

depende del orden de ejecución.

Event.observe('foo', 'click', respondToClick);

solo funcionará si

<tr id="foo">...

ya existe en el HTML DOM

Respondido 10 Abr '13, 15:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.