1

我希望有人能帮助我了解发生了什么。在我正在构建的小部件中:

$.widget("myns.usertable", { /* snip */});

我必须触发和捕获一些私人事件。我有这个代码:

  this._on({
    'keypress .user-input-fld': function(e) {
      switch (e.which) {
        case 13:
          e.preventDefault();
          var item = (inputfld.val());
          addbtn.trigger('itemsubmit', [item]);
          break;
      }
    },
    'itemsubmit.usertable': function(e, item) {
      console.log('itemsubmit', '_on');
      self._addItem(item);
      inputfld.val('').focus();
    }
  });

虽然这keypress部分效果很好,但itemsubmit.usertable似乎从未被调用过。相反,我必须这样听:

  table.bind('itemsubmit.usertable', function(e, item) {
    self._addItem(item);
    inputfld.val('').focus();
  });

一般来说,我可以走这条路,但如果我真的明白为什么会这样,我会更有信心。我更喜欢this._on({})and 集合,而不是分散在我的代码中的事件绑定。我觉得我在写不优雅的代码,这很痛苦。

我究竟做错了什么?

顺便说一句,我发现这个Microsoft 文档比 jQuery 的文档更有帮助。叹。

4

0 回答 0