Ответ 1
Самый простой способ - сделать это так (если вы не хотите, чтобы какая-либо информация о событии передавалась функции)...
$("#myid").click(function() {
myfunction(arg1, arg2);
});
Это создаст анонимную функцию, которая вызывается при срабатывании события click
. Это, в свою очередь, вызовет myfunction()
с аргументами, которые вы предоставляете.
Если вы хотите сохранить ThisBinding
(значение this
при вызове функции, установите для элемента, который был вызван событие), затем вызовите функцию с помощью call()
.
$("#myid").click(function() {
myfunction.call(this, arg1, arg2);
});
Вы не можете передать ссылку напрямую в том, как указывается ваш пример, или его единственным аргументом будет jQuery event
object.
Если вы хотите передать ссылку, вы должны использовать jQuery proxy()
function (которая представляет собой кросс-браузерную оболочку для Function.prototype.bind()
). Это позволяет передавать аргументы, которые связаны перед аргументом event
.
$("#myid").click($.proxy(myfunction, null, arg1, arg2));
В этом примере myfunction()
будет выполняться с его ThisBinding
intact (null
не является объектом, поэтому используется нормальное значение this
элемента, вызвавшего событие), вместе с аргументами (по порядку) arg1
, arg2
и, наконец, объект jQuery event
, который вы можете игнорировать, если он не требуется (даже не называйте его в аргументах функции).
Вы также можете использовать объект jQuery event
data
для передачи данных, но для этого потребуется изменить myfunction()
для доступа это через event.data.arg1
(которые не являются аргументами функций, например, вашими вопросами), или, по крайней мере, вводят ручную функцию прокси, такую как предыдущий пример или сгенерированный, используя последний пример.