Как передать данные функции при добавлении прослушивателя событий? - PullRequest
3 голосов
/ 29 марта 2012

Вот мой код:

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

function somethingHappens(evt) {
    // code here
}

Как я могу передать данные в функциюthingHappens () при подключении прослушивателя событий? Это возможно? Я искал что-то, что я мог бы сделать, как:

function somethingHappens(evt,dataItem1,dataItem2) {
    // code here, I need to use evt here
}

Спасибо за помощь!

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Вы можете сделать это по-старому, если не возражаете использовать анонимную функцию в качестве обработчика:

var data = { foo: 'bar' };

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

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

Но я также уверен, что вы можете использовать для этого события jQuery:

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

function somethingHappens(evt) {
    console.log(evt.data);
}
1 голос
/ 29 марта 2012

Вы можете использовать метод jQuery bind : -

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

function somethingHappens(event) {
   alert(event.data.foo); // alerts 'bar'
}
...