【发布时间】:2010-12-01 14:44:15
【问题描述】:
我有一个让我发疯的问题,作为最后的手段,我在这里提出一个问题。
我想将 onclick 事件从一个元素移动到同一元素的 onfocus 事件,我正在使用以下代码:
$("#theElement").bind("focus", {}, $("#theElement").data("events").click);
$("#theElement").unbind("click");
也许你已经猜到了。它不起作用。
我该如何进行这项工作?我在 jquery 1.3.2 的以下代码中收到“fn.apply 不是函数”消息:
proxy: function( fn, proxy ){
proxy = proxy || function(){ return fn.apply(this, arguments); };
// Set the guid of unique handler to the same of original handler, so it can be removed
proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
// So proxy can be declared as an argument
return proxy;
}
编辑:对不起,我应该提到的。这来自一个插件,它在单击元素时会做一些事情。我想在元素获得焦点而不是被点击时做同样的事情,所以我想到的最简单的解决方案是这样,因为我无法修改插件的代码。
编辑:发现问题。这类似于@sje397 在他的回答中发布的内容,而不是
$('#theElement').data('events').click[0]
但是
$('#theElement').data('events').click[3]
出于某种原因,即使只注册了一个事件,最终的结果也是 3(来自 jquery 的那段代码中的 guid)。
【问题讨论】:
-
它不起作用,因为
.click()是将事件绑定到元素的函数。它不是事件处理程序本身。现在我将看看你可以做些什么来调用事件处理程序;)
标签: javascript jquery