我希望有人能帮助我了解正在发生的事情。在我正在构建的小部件中:
$.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({})
和集合,而不是遍布我的代码的事件绑定。我觉得我写的不是优雅的代码,这很痛。
我做错了什么?
顺便说一下,我发现这个Microsoft documentation比jQuery更有帮助。叹息。