Estoy tratando de llamar a una función con parámetros usando .click de jQuery, pero no puedo hacer que funcione.
Así es como quiero que funcione:
$('.leadtoscore').click(add_event('shot'));
que llama
function add_event(event) {
blah blah blah }
Funciona si no uso parámetros, como este:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
Pero necesito poder pasar un parámetro a mi add_event
función.
¿Cómo puedo hacer esto específico?
Sé que puedo usar .click(function() { blah }
, pero llamo a la add_event
función desde varios lugares y quiero hacerlo de esta manera.
jquery
function
parameter-passing
Paul Hoffer
fuente
fuente
patricks
respuesta, que creo que es una gran solución: jsfiddle.net/naRRk/1Respuestas:
Para mayor detalle, encontré otra solución que era parte de la funcionalidad presentada en la versión 1.4.3 del controlador de eventos jQuery click.
Le permite pasar un mapa de datos al objeto de evento que jQuery retroalimenta automáticamente a la función de controlador de eventos como primer parámetro. El mapa de datos se entregaría a la
.click()
función como primer parámetro, seguido de la función de controlador de eventos.Aquí hay un código para ilustrar lo que quiero decir:
Sé que es tarde en el juego para esta pregunta, pero las respuestas anteriores me llevaron a esta solución, ¡así que espero que ayude a alguien alguna vez!
fuente
var param_obj = {data : {param1: "Hello", param2: "World"}}; cool_function(param_obj);
:?Debe usar una función anónima como esta:
Puede llamarlo como lo hizo en el ejemplo, solo un nombre de función sin parámetros, como este:
Pero el
add_event
método no se obtendrá'shot'
como parámetro, sino lo que sea queclick
pase a su devolución de llamada, que es elevent
objeto en sí ... por lo que no es aplicable en este caso , pero funciona para muchos otros. Si necesita pasar parámetros, use una función anónima ... o, hay otra opción, usar.bind()
y pasar datos, como esta:Y accede a él de
add_event
esta manera:fuente
click
controlador. En el método anónimo y los.bind()
ejemplos anteriores que puede usarthis
, se referirá al.loadtoscore
que hizo clic (como era de esperar). En el último ejemplo, dentro deadd_event(event)
lo mismo es cierto, usethis
o$(this)
y será lo que desee.function(){ add_event('shot', $(this));}
yfunction add_event(event, element){...}
.element
sería un elemento jQuery aquí (bind()
aunque funciona como Nick mencionó).$(this)
dentro de la función, por ejemplo: jsfiddle.net/tSu5tSi lo llamas como lo tenías ...
... necesitaría
add_event()
devolver una función, como ...La función se devuelve y se usa como argumento para
.click()
.fuente
event
parámetro. Debería haberlo incluido. : o)Tuve éxito usando .on () así:
Luego, dentro de la
add_event
función, obtienes acceso a 'shot' de esta manera:Consulte la documentación de .on () para obtener más información, donde proporcionan el siguiente ejemplo:
fuente
Sí, esta es una publicación anterior. De todos modos, alguien puede encontrarlo útil. Aquí hay otra forma de enviar parámetros a los controladores de eventos.
fuente
Establezca el objeto javaScript en el elemento onclick:
obtener Objeto de "este" elemento:
fuente
Me sale la solución simple:
Mi media es que pase el
onclick
evento de valor aljavascript function sendData()
, inicialice a la variable y tome el método del controlador de eventos jquery.Esto es posible ya que al principio
sendData(valueid)
se llama e inicializa el valor. Luego, después del evento jquery, se ejecutan y usan ese valor.Esta es la solución directa y para la solución detallada, vaya aquí .
fuente