Как я могу передать параметры обработчиков событий в jQuery?
С кодом jQuery, например:
$("#myid").click(myfunction);
function myfunction(arg1, arg2) {/* something */}
Как передать аргументы в myfunction
при использовании jQuery?
6 ответов:
самый простой способ-сделать это так (предполагая, что вы не хотите, чтобы какая-либо информация о событии передавалась функции)...
$("#myid").click(function() { myfunction(arg1, arg2); });
это создает анонимную функцию, которая вызывается, когда
click
событие срабатывает. Это в свою очередь вызоветmyfunction()
с аргументами, которые вы предоставляете.если вы хотите сохранить
ThisBinding
(стоимостьthis
при вызове функции установите значение элемент, который вызвал событие), затем вызовите функцию сcall()
.$("#myid").click(function() { myfunction.call(this, arg1, arg2); });
вы не можете передать ссылку непосредственно так, как указано в вашем примере, или ее единственным аргументом будет jQuery
event
объект.если вы do хотите передать ссылку, вы должны использовать jQuery по
proxy()
функция (которая является кросс-браузерной оболочкой дляFunction.prototype.bind()
). Это позволяет передавать аргументы, которые связаны до the
$("#myid").on('click', {arg1: 'hello', arg2: 'bye'}, myfunction); function myfunction(e) { var arg1 = e.data.arg1; var arg2 = e.data.arg2; alert(arg1); alert(arg2); } //call method directly: myfunction({ arg1: 'hello agian', arg2: 'bye again' });
также позволяет связывать и отменять определенные обработчики событий с помощью методов включения и выключения.
пример:
$("#myid").off('click', myfunction);
это приведет к отмене привязки обработчика myfunction от #myid
хотя вы, безусловно, должны использовать ответ Алекса, метод "привязки" библиотеки прототипов был стандартизирован в Ecmascript 5 и вскоре будет реализован в браузерах изначально. Это работает следующим образом:
jQuery("#myid").click(myfunction.bind(this, arg1, arg2));
старый поток, но для целей поиска; попробуйте:
$(selector).on('mouseover',...);
... и проверьте параметр " данные: http://api.jquery.com/on/
например:
function greet( event ) { alert( "Hello " + event.data.name ); } $( "button" ).on( "click", {name: "Karl"}, greet ); $( "button" ).on( "click", {name: "Addy"}, greet );