2015-04-23 33 views
0

我有一个非常简单的小工具概述出现在通过_trigger触发事件,我似乎无法绑定到:Jquery的插件触发没有被处理的事件或解雇

; (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(); 
}); 

和控制台输出:

Console output

为什么这个事件没有被处理/或者它甚至没有被解雇?我怎样才能调试呢?

更新:

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) { 

所以,现在我有工作,但真的不明白为什么。它是一个范围“东西”? 我想

“我要为testeventnamewidget注册”

这是怎么回事吗?

回答

0

_trigger本身实际上可以调用你的函数。在第一个参数中,您指定了要触发的回调函数的名称。所以,如果你要改变:

$('#videoA').ftpWidget(); 

$('#videoA').ftpWidget({ 
    testeventname: function (event, data) { 
    console.log("widget initialized"); 
    } 
}); 

,这也将正常工作。

Jquery-UI: How to Use the Widget Factory