2012-02-07 5 views
7

Estaba buscando en el plugin js de arranque, es decir, arrancar-typeahead.js.I no puede averiguar cómo se selecciona elemento.

$('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) 

sé elemento se selecciona realmente por la parte técnica de proporcionar, pero cuando mira a través de jquery.js, no puedo entender cómo se hace. Desde la parte .on() fui a la parte event.add() y luego me confundí. ¿Alguien me puede decir cómo se hace??

lo que lo hace, pero quiero saber cómo .¿Cómo se selecciona el elemento? Necesito más ideas aquí.

Respuesta

2

El primer argumento del método on() es el caso, en este caso se namespaced - el evento es focus en el espacio de nombres typeahead.data-api

El segundo argumento es un filtro selector con fines evento de delegación. El controlador de eventos esté conectada al elemento body, pero la función de controlador sólo se ejecuta para eventos procedentes de los elementos con el atributo data-provide con un valor de typeahead

+0

Gracias por su respuesta. Comprendo la idea principal. Pero no puedo ver cómo el elemento realmente es seleccionado por el atributo de suministro de datos. Tengo problemas para leer el código fuente de jquery. Fui a $ .event.add: función (elem, types, handler, data, selector), luego se perdió aquí. Necesito más explicación. – Gnijuohz

+1

Quizás es allí donde te equivocas: el elemento no está seleccionado con el atributo 'data-provide'. El elemento seleccionado en este ejemplo es 'cuerpo'. Cualquier evento bajo el espacio de nombre especificado que llegue al elemento 'body' se verifica para ver si tiene un atributo' data-provide', y si lo hace si su valor es 'typeahead'. Si es así, se ejecuta el controlador. Intente mirar el código fuente para 'on' ... – danwellman

+0

En realidad, en llamadas event.add es por eso que fui allí. Veré la fuente de nuevo. ¡Gracias de nuevo! – Gnijuohz

2

Si usted está buscando la respuesta a la qué (como yo no. ¿por qué alguien se registra un controlador de eventos enfoque tan incómoda.), la razón es pura inicialización basada hTML del control de escritura siguiente, tal como se describe en los documentation HERE:

<input type="text" data-provide="typeahead"> 

nodos con el atributo data-provide="typeahead" se activan como typeaheads como el documento recibe el foco ...

Cuestiones relacionadas