1

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

和控制台输出:

控制台输出

为什么这个事件没有被处理/甚至没有被触发?我该如何调试呢?

更新:

这个答案虽然不是我的问题,但给了我一个提示。onOP 正在从元素调用绑定body。所以我改变了

 $(widget).on("ftpwidget:testeventname", function (event, data) {

 $("body").on("ftpwidget:testeventname", function (event, data) {

它有效,所以也有效

 $("#video").on("ftpwidget:testeventname", function (event, data) {

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

“我要注册testeventnamewidget

这里发生了什么?

4

1 回答 1

1

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

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

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

那也行。

Jquery-UI:如何使用小部件工厂

于 2015-04-24T00:48:52.190 回答