0

私はこのコードを持っています:

(function (window, document, undefined) {

  var g = function (sel) {

    return {

      selector: document.querySelector(sel),

      on: function (evt, fn) {
        if (this.selector) this.selector.addEventListener(evt, fn, false);
        return this;
      }
    };
  };

  window.g = window._ = g;

})(this, document);

複数の要素を選択できるように、このコンテキストでquerySelectorAll代わりに使用するにはどうすればよいですか。querySelector特に のような複数の方法があることを考慮してonください。すべての要素をループして、呼び出したメソッドに返すにはどうすればよいですか。

4

1 に答える 1

1
selector: document.querySelectorAll(sel),
on: function (evt, fn) {
    if (this.selector) {
        for (var i=0, len=this.selector.length; i < len; i++)
            this.selector[i].addEventListener(evt, fn, false);
    return this;
}

そのループを多くのメソッドで再利用する必要がある場合は、そのようなラッパーを作成するだけです

selector: document.querySelectorAll(sel),
forEach: function (codeToApply) {
    for (var i=0, len=this.selector.length; i < len; i++)
            codeToApply.call(this, this.selector[i]);
},
on: function (evt, fn) {
    if (this.selector) {
        this.forEach(function (element) {
            element.addEventListener(evt, fn, false);
        }
    return this;
}
于 2013-08-02T12:01:16.077 に答える