2009-06-20 13 views
5

Me gustaría probar una nueva biblioteca de JavaScript. Habiendo usado (y amado) j Query 1.3's "Live" events, preferiría que en la siguiente biblioteca intente tener una delegación de eventos integrada en el sistema de eventos. Wikipedia's JS Library Comparison cae en el trabajo aquí.¿Qué bibliotecas de JavaScript tienen delegación de eventos?

Parece MooTools is getting it in 2.0. ¿Qué hay de los demás?

Estoy haciendo esta comunidad wiki. Por favor, ayúdame a completar la lista.

Prototipo: no

jQuery: a partir de 1,3

MooTools: como de 2,0

ExtJS: sí

Respuesta

2

delegación de eventos es más fácil de lo que piensa.

Si encuentro una biblioteca sin delegación automática de eventos, simplemente le agrego una capa.

+0

OK. Entonces, ¿qué bibliotecas NO tienen delegación de eventos? :-) – Nosredna

2

Sugeriría mirar en Prototype. Está listado en SO tan frecuentemente como jQuery y lo uso como mi biblioteca JS para todos mis proyectos.

No creo que tenga delegados incorporados, pero es una biblioteca completa con todas las funciones necesarias para agregar delegados según sea necesario.

+0

Enumeraré Prototype con un "no" en la tabla. – Nosredna

1

Si te encanta usar Jquery pero te apetece probar algo diferente, yo iría con mootools, el enlace al complemento de delegación de eventos de Aarons más su tutorial sobre cómo usar el original debería darte todo lo que necesitas. Hay mucha discusión sobre cuál es mejor al final del día, es justo lo que prefieres.

Mootools es excelente y tiene algunos buenos complementos, también deberías echarle un vistazo a David Walsh, que hace muchos desarrollos de mootools y algunos Jquery. Él publica algunas cosas interesantes. http://davidwalsh.name

+0

Voy a probar MooTools tan pronto como 2.0 se despliegue, lo cual creo que será pronto. – Nosredna

1

La delegación de eventos se trata simplemente de colgar controladores de eventos más arriba en el árbol DOM. Todos los marcos pueden/deberían ser capaces de hacer eso. Los manejadores deberían poder detectar cualquier evento que burbujee. El evento contiene el elemento que lo activó y, a partir de eso, el controlador puede hacer lo que sea.

El prototipo no tiene ningún evento de delegación de azúcar nativo de la biblioteca que funcione como jQuery's $.fn.live, pero es bastante simple crear una función que atrape eventos y haga cosas con sus elementos de destino.

document.observe('click',function(event){alert(event.element().inspect())}) 

Usted puede usar esto para hacer un clon de jQuery en vivo con bastante facilidad (no estoy diciendo que esto va a ir bien o nada).

live = function(selector,callback){ 
    document.observe("click",function(e){ 
    var element = e.element() 
    if (!element.match(selector)) 
     element = element.ancestors().find(function(elem){return elem.match(selector)}); 
    else 
     element = null 
    if (element) 
     callback.apply(element) 
    }) 
} 

se le puede llamar como:

live("div",function(){this.setStyle({color:'blue'})}) 

Creo que lo que digo es que evento delegación está integrada en javascript ya. Las bibliotecas solo agregan azúcar.

+0

Estoy compilando una lista de cuáles agregan el azúcar. – Nosredna

+0

Es cierto. Pero, pensé que sería divertido intentar reactivar en vivo en Prototype para ver qué fácil sería. Resulta que es bastante fácil. – BaroqueBobcat

1

Ext Js siempre tengo que creer.

+0

De hecho. Ext también tiene una delegación de eventos incorporada en muchos de sus widgets, por ejemplo, para manejar las operaciones de arrastrar/soltar y otras interacciones intensivas de eventos para maximizar el rendimiento. –

Cuestiones relacionadas