那么这样的事情可能吗?
Y.one("input.units").on("keyup change", function(e){
...
});
jquery 等价物是
$("input.units").bind("keyup change", function(e){
...
});
那么这样的事情可能吗?
Y.one("input.units").on("keyup change", function(e){
...
});
jquery 等价物是
$("input.units").bind("keyup change", function(e){
...
});
是的,这是可能的。只需传递事件名称数组而不是字符串:
Y.one('input.units').on(['keyup', 'change'], function (e) {
// ...
});
为什么不尝试这样的事情:
var actionFunction = function(e) { /* stuff goes here */ };
node.one("input.units").on("keyup", actionFunction);
node.one("input.units").on("change", actionFunction);
编辑: YUI 本机支持这一点。请参阅下面瑞安的回答。
没有。不过,您可以执行以下操作:
YUI().use("node", "oop", function (Y) {
var on = Y.Node.prototype.on;
function detachOne(handle) {
handle.detach();
}
Y.mix(Y.Node.prototype, {
on: function (type, fn, context) {
var args = Y.Array(arguments),
types = args[0].split(" "),
handles = [];
Y.each(types, function (type) {
args[0] = type;
handles.push(on.apply(this, args));
})
return {
detach: Y.bind(Y.each, null, handles, detachOne)
};
}
}, true);
})
此代码包装 Node.on() 以接受以空格分隔的事件类型字符串。它返回一个具有单一方法 detach 的对象,该方法将您的处理程序与所有事件分离。
请注意,此代码仅影响其沙箱内的 Y 实例,因此您应该将它放在您传递给的函数中YUI().use
。将其打包为模块也很容易。