Jquery小部件触发事件未被处理或触发

时间:2015-04-23 23:59:50

标签: javascript jquery jquery-ui jquery-ui-widget

我有一个非常简单的小部件概述似乎通过_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();
 });

和控制台输出:

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

所以现在我有它的工作,但不是真的明白为什么。这是一个范围&#34;事情&#34;? 我在想

&#34;我想在testeventname&#34;

上注册widget

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

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

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

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

也可以。

Jquery-UI: How to Use the Widget Factory