jquery - texto - trigger click javascript
.click de jQuery-pasa los parámetros a la función de usuario (7)
Me sale la solución simple:
<button id="btn1" onclick="sendData(20)">ClickMe</button>
<script>
var id; // global variable
function sendData(valueId){
id = valueId;
}
$("#btn1").click(function(){
alert(id);
});
</script>
Mi media es que pase el valor onclick
event a la javascript function sendData()
, inicialice la variable y javascript function sendData()
con el método del controlador de eventos jquery.
Esto es posible ya que al primer sendData(valueid)
se llama e inicializa el valor. Luego, después de obtener el evento jquery, ejecute y use ese valor.
Esta es la solución directa y para la solución de detalles, vaya Here .
Estoy tratando de llamar a una función con parámetros usando jQuery''s .click, 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 través de mi función add_event
.
¿Cómo puedo hacer esta cosa específica?
Sé que puedo usar .click(function() { blah }
, pero llamo a la función add_event
desde múltiples lugares y quiero hacerlo de esta manera.
Necesitas usar una función anónima como esta:
$(''.leadtoscore'').click(function() {
add_event(''shot'')
});
Puede llamarlo como lo ha hecho en el ejemplo, solo un nombre de función sin parámetros, como este:
$(''.leadtoscore'').click(add_event);
Pero el método add_event
no se ''shot''
como parámetro, sino que cualquier click
pasa a su devolución de llamada, que es el objeto del event
sí ... así 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, use .bind()
y pase datos, como esto:
$(''.leadtoscore'').bind(''click'', { param: ''shot'' }, add_event);
Y accede a él en add_event
, así:
function add_event(event) {
//event.data.param == "shot", use as needed
}
Por completo, encontré otra solución que formaba parte de la funcionalidad introducida 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 del controlador de eventos como primer parámetro. El mapa de datos se entregaría a la función .click()
como primer parámetro, seguida de la función del controlador de eventos.
Aquí hay un código para ilustrar lo que quiero decir:
// say your selector and click handler looks something like this...
$("some selector").click({param1: "Hello", param2: "World"}, cool_function);
// in your function, just grab the event object and go crazy...
function cool_function(event){
alert(event.data.param1);
alert(event.data.param2);
}
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!
Sí, este es un post viejo. Independientemente, alguien puede encontrarlo útil. Aquí hay otra forma de enviar parámetros a los controladores de eventos.
//click handler
function add_event(event, paramA, paramB)
{
//do something with your parameters
alert(paramA ? ''paramA:'' + paramA : '''' + paramB ? '' paramB:'' + paramB : '''');
}
//bind handler to click event
$(''.leadtoscore'').click(add_event);
...
//once you''ve processed some data and know your parameters, trigger a click event.
//In this case, we will send ''myfirst'' and ''mysecond'' as parameters
$(''.leadtoscore'').trigger(''click'', {''myfirst'', ''mysecond''});
//or use variables
var a = ''first'',
b = ''second'';
$(''.leadtoscore'').trigger(''click'', {a, b});
$(''.leadtoscore'').trigger(''click'', {a});
Si lo llamas como lo tuviste ...
$(''.leadtoscore'').click(add_event(''shot''));
... necesitarías que add_event()
devuelva una función, como ...
function add_event(param) {
return function() {
// your code that does something with param
alert( param );
};
}
La función se devuelve y se utiliza como argumento para .click()
.
Tuve éxito usando .on () de esta manera:
$(''.leadtoscore'').on(''click'', {event_type: ''shot''}, add_event);
Luego, dentro de la función add_event
, obtienes acceso a ''shot'' de esta manera:
event.data.event_type
Consulte la documentación de .on () para obtener más información, donde se proporciona el siguiente ejemplo:
function myHandler( event ) {
alert( event.data.foo );
}
$( "p" ).on( "click", { foo: "bar" }, myHandler );
$imgReload.data(''self'', $self);
$imgReload.click(function (e) {
var $p = $(this).data(''self'');
$p._reloadTable();
});
Establecer el objeto javaScript para onclick elemento:
$imgReload.data(''self'', $self);
obtener objeto de "este" elemento:
var $p = $(this).data(''self'');