Saya mencoba memanggil fungsi dengan parameter menggunakan jQuery's. Klik, tapi saya tidak bisa membuatnya berfungsi.
Inilah yang saya inginkan:
$('.leadtoscore').click(add_event('shot'));
yang memanggil
function add_event(event) {
blah blah blah }
Ini berfungsi jika saya tidak menggunakan parameter, seperti ini:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
Tapi saya harus bisa melewati parameter ke add_event
fungsi saya .
Bagaimana saya bisa melakukan hal khusus ini?
Saya tahu saya bisa menggunakan .click(function() { blah }
, tetapi saya memanggil add_event
fungsi dari beberapa tempat dan ingin melakukannya dengan cara ini.
jquery
function
parameter-passing
Paul Hoffer
sumber
sumber
patricks
jawaban, yang menurut saya merupakan solusi hebat: jsfiddle.net/naRRk/1Jawaban:
Untuk ketelitian, saya menemukan solusi lain yang merupakan bagian dari fungsi yang diperkenalkan di versi 1.4.3 dari event handler klik jQuery .
Ini memungkinkan Anda untuk meneruskan peta data ke objek acara yang secara otomatis akan diumpankan kembali ke fungsi event handler oleh jQuery sebagai parameter pertama. Peta data akan diserahkan ke
.click()
fungsi sebagai parameter pertama, diikuti oleh fungsi event handler.Berikut ini beberapa kode untuk menggambarkan apa yang saya maksud:
Saya tahu sudah terlambat dalam permainan untuk pertanyaan ini, tetapi jawaban sebelumnya membawa saya ke solusi ini, jadi saya harap ini membantu seseorang kapan saja!
sumber
var param_obj = {data : {param1: "Hello", param2: "World"}}; cool_function(param_obj);
?Anda perlu menggunakan fungsi anonim seperti ini:
Anda dapat memanggilnya seperti yang Anda miliki dalam contoh, hanya nama fungsi tanpa parameter, seperti ini:
Tetapi
add_event
metode ini tidak akan mendapatkan'shot'
parameternya, melainkan apa pun yangclick
lolos ke panggilan baliknya, yang merupakanevent
objek itu sendiri ... jadi tidak berlaku dalam kasus ini , tetapi berfungsi untuk banyak orang lain. Jika Anda perlu meneruskan parameter, gunakan fungsi anonim ... atau, ada satu opsi lain , gunakan.bind()
dan kirimkan data, seperti ini:Dan mengaksesnya
add_event
, seperti ini:sumber
click
handler. Dalam metode anonim dan.bind()
contoh di atas yang dapat Anda gunakanthis
, itu akan merujuk pada yang.loadtoscore
Anda klik (seperti yang Anda harapkan). Dalam contoh terakhir, di dalamadd_event(event)
yang sama benar, gunakanthis
atau$(this)
dan itu akan menjadi apa yang Anda inginkan.function(){ add_event('shot', $(this));}
danfunction add_event(event, element){...}
.element
akan menjadi elemen jQuery di sini (berfungsi dengan baikbind()
seperti yang disebutkan Nick).$(this)
di dalam fungsi, misalnya: jsfiddle.net/tSu5tJika Anda menyebutnya seperti yang Anda miliki ...
... Anda harus
add_event()
mengembalikan fungsi, seperti ...Fungsi dikembalikan dan digunakan sebagai argumen untuk
.click()
.sumber
event
parameter. Aku seharusnya memasukkannya. : o)Saya sukses menggunakan .on () seperti:
Kemudian di dalam
add_event
fungsi Anda mendapatkan akses ke 'menembak' seperti ini:Lihat dokumentasi .on () untuk info lebih lanjut, di mana mereka memberikan contoh berikut:
sumber
Ya, ini adalah pos lama. Bagaimanapun, seseorang mungkin menganggapnya berguna. Berikut ini cara lain untuk mengirim parameter ke penangan acara.
sumber
Setel objek javaScript ke elemen klik:
dapatkan Objek dari elemen "ini":
sumber
Saya mendapatkan solusi sederhana:
Maksud saya adalah yang meneruskan nilai
onclick
event kejavascript function sendData()
, menginisialisasi ke variabel dan membawanya dengan metode event handler jquery.Ini dimungkinkan karena pada awalnya
sendData(valueid)
dipanggil dan menginisialisasi nilai. Kemudian setelah acara jquery dieksekusi dan gunakan nilai itu.Ini adalah solusi lurus ke depan dan Untuk detail, klik di Sini .
sumber