代码之家  ›  专栏  ›  技术社区  ›  Rupert Madden-Abbott

“this”的问题:如何访问addEvent函数中的元素和类?

  •  1
  • Rupert Madden-Abbott  · 技术社区  · 15 年前

    这可能最好通过一些代码来解释。我知道在下面的例子中 this addEvent方法中包含数组中的当前元素 elements

    var testClass = new Class({
        testMethod: function() {
            var elements = $$('.elements');
            elements.addEvent('click', function() {
                console.log(this) //This will log the current element from elements
                });
            }
        });
    

    我也知道在下面的例子中, 而是指班级 testClass

    var testClass = new Class({
        testMethod: function() {
            var elements = $$('.elements');
            elements.addEvent('click', function() {
                console.log(this); //This will log the class testClass
                }.bind(this));
            }
        });
    

    1 回复  |  直到 15 年前
        1
  •  3
  •   Christian C. Salvadó    15 年前

    您可以为事件处理程序函数提供参数事件参数,例如:

    var TestClass = new Class({
      testMethod: function() {
        var elements = $$('.elements');
        elements.addEvent('click', function(e) {
          console.log(this);     // the object instance
          console.log(e.target); // <--- the HTML element
        }.bind(this));
      }
    });
    

    MooTools将通过 event object 作为 e e.target 属性,该属性将引用触发事件的DOM元素。