这样的事情可能吗?
Y.one("input.units").on("keyup change", function(e){
...
});
jquery等价物是
$("input.units").bind("keyup change", function(e){
...
});
答案 0 :(得分:10)
是的,这是可能的。只需传递一组事件名称而不是字符串:
Y.one('input.units').on(['keyup', 'change'], function (e) {
// ...
});
答案 1 :(得分:1)
为什么不尝试这样的事情:
var actionFunction = function(e) { /* stuff goes here */ };
node.one("input.units").on("keyup", actionFunction);
node.one("input.units").on("change", actionFunction);
答案 2 :(得分:1)
编辑: YUI原生支持此功能。请参阅下面的Ryan的答案。
No。不过你可以这样做:
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
的函数中。将它打包成模块也很容易。