我希望有人能帮助我了解发生了什么。在我正在构建的小部件中:
$.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 的文档更有帮助。叹。