Связывание существующей функции JavaScript в jQuery
Использование jQuery Я хочу привязать существующую функцию к кнопке. Я прошел через документацию и нашел метод bind, но примеры в jQuery связывают вновь созданные функции, где я хочу связать функцию, которая уже жестко закодирована, например:
function fHardCodedFunction(){
//Do stuff
}
function fBindFunctionToElement(){
$("#MyButton").bind("click", fHardCodedFunction());
}
Это возможно? Или я об этом ошибаюсь?
Ответы
Ответ 1
Простой fHardCodedFunction
уже относится к функции, и суффикс ()
просто вызовет его. Поэтому просто передайте функцию вместо ее вызова и тем самым просто передайте возвращаемое значение:
function fBindFunctionToElement(){
$("#MyButton").bind("click", fHardCodedFunction);
}
Ответ 2
Заимствуя из других сообщений, вы можете параметризовать свой обработчик событий следующим образом:
function fHardCodedFunction(someValue) {
alert(this.id + " - " + someValue);
}
function fBindFunctionToElement() {
var someValue = "whatever";
$("#MyButton").bind("click",
function() {
fHardCodedFunction.apply(this, [someValue]);
}
);
}
$(document).ready
(
function() {
fBindFunctionToElement();
}
);
Я использую apply здесь, потому что в функции fHardCodedFunction
я хотел бы, чтобы свойство this
ссылалось на элемент MyButton
. Также обратите внимание, что apply ожидает массив для второго параметра, поэтому я заключил someValue
в скобки.
Вам не обязательно это делать и вы можете забыть об этом свойстве this
, если хотите.
Ответ 3
Да, вы можете связывать методы, написанные где-то в другом месте, но вы должны игнорировать круглые скобки:
function fHardCodedFunction(){
//Do stuff
}
function fBindFunctionToElement(){
$("#MyButton").bind("click", fHardCodedFunction);
}