Frage

so etwas wie das möglich?

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

das jquery entspricht

$("input.units").bind("keyup change", function(e){
    ...
});
War es hilfreich?

Lösung

Ja, das ist möglich. Übergeben Sie einfach eine Reihe von Ereignisnamen anstelle einer Zeichenfolge:

Y.one('input.units').on(['keyup', 'change'], function (e) {
    // ...
});

Andere Tipps

Warum nicht so etwas wie dies versucht:

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

node.one("input.units").on("keyup", actionFunction);
node.one("input.units").on("change", actionFunction);

EDIT: YUI nativ unterstützt dies. Siehe Ryans Antwort unten.

No . Man könnte so etwas tun, aber:

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);
})

Dieser Code hüllt Node.on () eine Reihe von Leerzeichen getrennte Ereignistypen zu akzeptieren. Es gibt ein Objekt mit einer einzigen Methode, detach, die von allen Ereignissen Handler ablöst.

Beachten Sie, dass dieser Code nur die Y-Instanz wirkt innerhalb seiner Sandbox , so dass Sie es in der Funktion setzen sollte, dass Sie YUI().use passieren. Es wäre auch leicht sein, es als Modul zu verpacken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top