Javascript jQuery插件自定义事件触发器未触发
我已经有一段时间没有开发jQuery插件了,我正在开发一个包含选项和内部事件的非常常见的样板文件。在其中一个内部方法中,我需要触发一个自定义事件,以便其他页面可以捕获该事件并使用它。更具体地说,在这个用法中,在Javascript jQuery插件自定义事件触发器未触发,javascript,jquery,events,jquery-plugins,dom-events,Javascript,Jquery,Events,Jquery Plugins,Dom Events,我已经有一段时间没有开发jQuery插件了,我正在开发一个包含选项和内部事件的非常常见的样板文件。在其中一个内部方法中,我需要触发一个自定义事件,以便其他页面可以捕获该事件并使用它。更具体地说,在这个用法中,在canvas元素上绘制结束时,我希望能够捕获插件外部的事件,以便获取canvas内容,以便将插件本身不可知的内容发送到其他地方 但是,trigger调用似乎既没有触发,也没有从另一个页面查找绑定事件。Firebug中没有显示任何控制台消息 以下是我的示例插件(简化): 然后从文档中的一个单
canvas
元素上绘制结束时,我希望能够捕获插件外部的事件,以便获取canvas
内容,以便将插件本身不可知的内容发送到其他地方
但是,trigger
调用似乎既没有触发,也没有从另一个页面查找绑定事件。Firebug中没有显示任何控制台消息
以下是我的示例插件(简化):
然后从文档中的一个单独页面。就绪
事件被绑定:
$(".myPluginInstances").myPlugin().on("mydrawevent", function (e, data) {
console.log("mydrawevent");
console.log(data);
});
从Firebug中,我看到imgElement
确实绑定了侦听器:
mydrawevent
-> function(a)
-> function(e, data)
我尝试过很多事情,比如在不同的DOM元素上调用
触发器
,在数组中传入和传出事件参数数据,定义一个回调方法(它有自己的问题),等等。我有一种感觉,这个问题就在我面前,很愚蠢,但我可以用更多的眼睛来仔细检查我的理智。作为我对上面Vikk的回应的进一步解释,这个问题确实是界定和理解哪些对象绑定到插件的哪些部分。在我的例子中,作为私有事件处理程序的内部方法被绑定到我的canvas
元素,但是插件本身被实例化在img
元素上,这至少是这个特定实现的临时要求
基于此,在内部事件处理程序中使用
$(this)
意味着它试图在我的画布上使用trigger
元素,而不是img
元素,后者从插件外部连接了mydrawevent
监听器。乍一看,inputEnd中的“this”似乎是指inputEnd而不是plugin-JS不是函数范围块作用域。它看起来好像不使用“this”就可以访问。你能不能不试试$(inputElement)
?好主意,我尝试了一大堆不同的元素作为触发器,但显然忽略了这样一个事实,即inputEnd绑定到画布
,但事件本身正在侦听img
。在这种情况下,$(imgElement)
什么都不是,$(this)
是画布
,而$(this)。prev()
是实际的img
,它绑定了事件侦听器。我知道一定是这样愚蠢的事情。就我而言,我的大脑完全是在放屁。
mydrawevent
-> function(a)
-> function(e, data)