_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();
});
和控制台输出:
为什么这个事件没有被处理/甚至没有被触发?我该如何调试呢?
更新:
这个答案虽然不是我的问题,但给了我一个提示。on
OP 正在从元素调用绑定body
。所以我改变了
$(widget).on("ftpwidget:testeventname", function (event, data) {
至
$("body").on("ftpwidget:testeventname", function (event, data) {
它有效,所以也有效
$("#video").on("ftpwidget:testeventname", function (event, data) {
所以现在我让它工作了,但我真的不明白为什么。它是一个范围“东西”吗?我刚在想
“我要注册testeventname
”widget
这里发生了什么?