jQuery encontrando “selector”

siguiente es mi código

HTML :

Hello !!

Javascript :

 $(function() { $('#content .child').click(function() { //print the selected jQuery parameters }); }); 

Necesito capturar los parámetros que paso a la función jQuery en el código anterior, quiero imprimir la salida como #content .child .

Gracias !!

Escriba sus propios envoltorios para eventos de clic, enfoque, … que proporcionan esta funcionalidad. Escribir una envoltura así es bastante trivial. Aquí hay una forma:

 jQuery.fn.addClick = function(fn) { var selector = this.selector; // capture the selector here this.click(function(event) { // write a wrapper for the click handler fn(event, selector); // call the user's handler and pass it the selector }); }; 

La función del controlador de eventos ahora obtiene dos parámetros en lugar de uno. Primero es el evento y el segundo es el selector que se usó para vincular este evento.

 $("#content .child").addClick(function(e, selector) { alert(selector); // "#content .child" }); 

La ventaja de envolverlo con cierres es que puede vincular eventos de múltiples clics al mismo elemento con diferentes selectores, y todos trabajarán juntos.

Ver un ejemplo

Normalmente usaría el selector , pero en este contexto, this no tiene selector. Usted podría usar:

 var div = $('#content .child'); div.click(function() { alert(div.selector); }); 

Por supuesto, eso mostrará el mismo selector para cada niño, y no todo lo útil (tal vez la depuración). Puedes ir más simple, claro que:

 var selector = '#content .child'; $(selector).click(function() { alert(selector); }); 

Ejemplo de trabajo: http://jsfiddle.net/cmuTv/

Aparte de la respuesta de Kobi, generalmente no es posible. Es algo así como preguntar “dado el siguiente bucle, ¿cómo puedo recuperar la matriz original?”

 var array = [1, 2, 3, 4, 5]; for (i = 0; i < array.length; i++) { var a = array[i]; alert( /* how do I get the original array given only 'a'? */ ); } 

Está claro que, en este caso, no se puede devolver la matriz original solo a . Pero lo que podría no estar claro es que lo mismo también es cierto en su caso.

Esto se debe a que una llamada a .click() se convierte esencialmente en una llamada a .each() y eso es básicamente un bucle for cada uno de los elementos coincidentes. Cuando está viendo un solo elemento en esa colección, no hay manera de volver a recuperar la colección original.