我有一个非常简单的小部件概述似乎通过_trigger
触发了一个我似乎无法绑定的事件:
; (function ($) {
$.widget('testspace.ftpWidget', {
options: {},
widgetEventPrefix: 'ftpwidget:',
_create: function () {
var that = this;
that.paused = ko.observable(false);
},
_triggerPlayerInitialized: function () {
console.log("player initialized");
this._trigger("testeventname", null, null);
console.log("player testeventname supposedly fired");
},
pause: function () {
this.paused(!this.paused());
console.log("player paused");
this._triggerPlayerInitialized();
},
_destroy: function () { },
_setOption: function (key, value) { }
});
}(jQuery));
在html文件中:
<script>
jQuery(document).ready(function ($) {
$('#videoA').ftpWidget();
var widget = $('#videoA').data("testspace-ftpWidget");
console.log(widget);
$(widget).on("ftpwidget:testeventname", function (event, data) {
console.log("widget initialized");
});
widget.pause();
});
和控制台输出:
为什么这个事件没有被处理/或者甚至没有被解雇?我该怎么调试呢?
更新
This answer,虽然不是我的问题,但给了我一个提示。 OP正在从元素on
调用body
绑定。所以我改变了
$(widget).on("ftpwidget:testeventname", function (event, data) {
到
$("body").on("ftpwidget:testeventname", function (event, data) {
并且它有效,
也是如此 $("#video").on("ftpwidget:testeventname", function (event, data) {
所以现在我有它的工作,但不是真的明白为什么。这是一个范围&#34;事情&#34;? 我在想
&#34;我想在testeventname
&#34;
widget
这里发生了什么?
答案 0 :(得分:1)
_trigger本身实际上可以调用你的函数。在第一个参数中,您要指定要触发的回调函数的名称。所以,如果你要改变:
$('#videoA').ftpWidget();
到
$('#videoA').ftpWidget({
testeventname: function (event, data) {
console.log("widget initialized");
}
});
也可以。