Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I pass data to a function when adding an event listener?

Here is my code:

$(document).ready(function(){
dropbox.addEventListener("dragenter", somethingHappens, false);
});

function somethingHappens(evt) {
    // code here
}

How can I pass data to the somethingHappens() function when attaching the event listener? Is that possible? I was looking for something I could do like:

function somethingHappens(evt,dataItem1,dataItem2) {
    // code here, I need to use evt here
}
like image 418
tundoopani Avatar asked Dec 07 '25 21:12

tundoopani


2 Answers

You can do it the old school way if you don’t mind using an anonymous function as handler:

var data = { foo: 'bar' };

dropbox.addEventListener("dragenter", function(evt) {
    somethingHappens.call(this, evt, data);
}, false);

function somethingHappens(evt, data) {
    console.log(data);
}

But I’m also pretty sure you can use jQuery events for this:

$(dropbox).bind( 'dragenter', { foo: 'bar' }, somethingHappens );

function somethingHappens(evt) {
    console.log(evt.data);
}
like image 116
David Hellsing Avatar answered Dec 10 '25 11:12

David Hellsing


You could use jQuery's bind method:-

$(document).ready(function(){
$('#yourdropboxid').bind("dragenter", { foo: 'bar' }, somethingHappens);
});

function somethingHappens(event) {
   alert(event.data.foo); // alerts 'bar'
}
like image 26
tinyd Avatar answered Dec 10 '25 09:12

tinyd