5

それで、このようなことは可能ですか?

Y.one("input.units").on("keyup change", function(e){
    ...
});

jqueryに相当するものは

$("input.units").bind("keyup change", function(e){
    ...
});
4

3 に答える 3

10

はい、これは可能です。文字列の代わりにイベント名の配列を渡すだけです。

Y.one('input.units').on(['keyup', 'change'], function (e) {
    // ...
});
于 2010-10-09T00:08:47.817 に答える
1

このようなものを試してみませんか:

var actionFunction = function(e) { /* stuff goes here */ };

node.one("input.units").on("keyup", actionFunction);
node.one("input.units").on("change", actionFunction);
于 2010-09-08T14:59:44.603 に答える
1

編集: 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。モジュールとしてパッケージ化するのも簡単です。

于 2010-09-08T18:42:43.123 に答える