Estou tentando chamar uma função com parâmetros usando o .click do jQuery, mas não consigo fazê-lo funcionar.
É assim que eu quero que funcione:
$('.leadtoscore').click(add_event('shot'));
que chama
function add_event(event) {
blah blah blah }
Funciona se eu não usar parâmetros, como este:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
Mas preciso passar um parâmetro para minha add_event
função.
Como posso fazer essa coisa específica?
Eu sei que posso usar .click(function() { blah }
, mas chamo a add_event
função de vários lugares e quero fazê-lo dessa maneira.
jquery
function
parameter-passing
Paul Hoffer
fonte
fonte
patricks
resposta, que eu acho que é uma grande solução: jsfiddle.net/naRRk/1Respostas:
Para mais detalhes, deparei-me com outra solução que fazia parte da funcionalidade introduzida na versão 1.4.3 do manipulador de eventos do jQuery click.
Ele permite que você transmita um mapa de dados para o objeto de evento que é automaticamente retornado à função de manipulador de eventos pelo jQuery como o primeiro parâmetro. O mapa de dados seria entregue à
.click()
função como o primeiro parâmetro, seguido pela função do manipulador de eventos.Aqui está um código para ilustrar o que quero dizer:
Eu sei que é tarde no jogo para esta pergunta, mas as respostas anteriores me levaram a essa solução, então espero que ajude alguém algum dia!
fonte
var param_obj = {data : {param1: "Hello", param2: "World"}}; cool_function(param_obj);
:?Você precisa usar uma função anônima como esta:
Você pode chamá-lo como no exemplo, apenas um nome de função sem parâmetros, como este:
Mas o
add_event
método não obtém'shot'
o parâmetro, mas o queclick
passa para o retorno de chamada, que é oevent
próprio objeto ... portanto, não é aplicável neste caso , mas funciona para muitos outros. Se você precisar passar parâmetros, use uma função anônima ... ou, há outra opção, use.bind()
e passe dados, como este:E acesse-o
add_event
assim:fonte
click
manipulador. No método anônimo e nos.bind()
exemplos acima, você pode usarthis
, ele se refere ao que.loadtoscore
você clicou (como seria de esperar). No último exemplo, dentroadd_event(event)
do mesmo é verdade, usethis
or$(this)
e será o que você deseja.function(){ add_event('shot', $(this));}
efunction add_event(event, element){...}
.element
seria um elemento jQuery aqui (ele funciona com obind()
que Nick mencionou).$(this)
dentro da função, por exemplo: jsfiddle.net/tSu5tSe você chamá-lo da maneira que você tinha ...
... você precisaria
add_event()
retornar uma função, como ...A função é retornada e usada como argumento para
.click()
.fonte
event
parâmetro. Eu deveria ter incluído. : o)Eu tive sucesso usando .on () assim:
Então, dentro da
add_event
função, você obtém acesso a 'shot' assim:Consulte a documentação .on () para obter mais informações, onde eles fornecem o seguinte exemplo:
fonte
Sim, este é um post antigo. Independentemente disso, alguém pode achar útil. Aqui está outra maneira de enviar parâmetros para manipuladores de eventos.
fonte
Defina o objeto javaScript para o elemento onclick:
obtenha Objeto do elemento "this":
fonte
Eu recebo a solução simples:
Minha média é que passa o
onclick
evento de valor parajavascript function sendData()
, inicialize para a variável e o aceite pelo método manipulador de eventos jquery.Isso é possível, pois, inicialmente,
sendData(valueid)
é chamado e inicializa o valor. Depois que o evento jquery é executado, use esse valor.Esta é a solução direta e a solução Para detalhes, clique aqui .
fonte