JavaScript-如何在“JavaScript”中添加对多个事件的支持;关于;功能?

JavaScript-如何在“JavaScript”中添加对多个事件的支持;关于;功能?,javascript,Javascript,我制作了一个简单的JavaScript库,其中有一个on函数。 该库工作正常,但我想让我的on函数支持多个事件,并向所有元素添加事件。 我能做到这一点的最有效方式是什么 以下是我的on功能的代码: Q.fn.on = function(type, fn){ this[0]["on" + type] = fn; }; 试试这个: $(".el").on({ click: function() { // Do something }, mouseenter: functio

我制作了一个简单的JavaScript库,其中有一个
on
函数。
该库工作正常,但我想让我的
on
函数支持多个事件,并向所有元素添加事件。

我能做到这一点的最有效方式是什么

以下是我的
on
功能的代码:

Q.fn.on = function(type, fn){
  this[0]["on" + type] = fn;
};
试试这个:

$(".el").on({
  click: function() {
    // Do something
  },
  mouseenter: function() {  
    // Do something  
  },
  mouseleave: function() {  
    // Do something
  }
});
试试这个:

$(".el").on({
  click: function() {
    // Do something
  },
  mouseenter: function() {  
    // Do something  
  },
  mouseleave: function() {  
    // Do something
  }
});

您只是将事件添加到第一个元素中,因为您使用的是
此[0]

此[0]
对象中的第一项,即第一个元素。
您要做的是循环遍历
对象中的所有元素,并为每个元素添加一个事件侦听器。

要支持多个事件,您需要将“type”字符串(现在称为
events
)拆分为一个数组,请在该数组中循环,并使用该数组中的每个事件附加每个元素

这应该对你想要达到的目标起作用

Q.fn.on = function(events, callback) {
  // split multiple events into an array
  // or push a single event into a new array
  events = events.match(" ") ? events.split(" ") : [events];
  // loop through the events
  for(var e = 0; e < events.length; e++) {
    // replace the "on" in the event, we don't need it.
    ev = events[e].replace(/^on/, "");
    // loop through your elements, you want to add an event listener to all of them
    for(var i = 0; i < this.length; i++) {
      // add your event listener to the element
      this[i].addEventListener(ev, callback, false);
    }
  }
};

有关在JavaScript中添加和删除事件的详细信息,请访问您只是在第一个元素中添加事件,因为您使用的是
此[0]

此[0]
对象中的第一项,即第一个元素。
您要做的是循环遍历
对象中的所有元素,并为每个元素添加一个事件侦听器。

要支持多个事件,您需要将“type”字符串(现在称为
events
)拆分为一个数组,请在该数组中循环,并使用该数组中的每个事件附加每个元素

这应该对你想要达到的目标起作用

Q.fn.on = function(events, callback) {
  // split multiple events into an array
  // or push a single event into a new array
  events = events.match(" ") ? events.split(" ") : [events];
  // loop through the events
  for(var e = 0; e < events.length; e++) {
    // replace the "on" in the event, we don't need it.
    ev = events[e].replace(/^on/, "");
    // loop through your elements, you want to add an event listener to all of them
    for(var i = 0; i < this.length; i++) {
      // add your event listener to the element
      this[i].addEventListener(ev, callback, false);
    }
  }
};

有关在JavaScript中添加和删除事件的详细信息,请访问

谢谢您的帮助,但我没有使用jQuery或其他库。谢谢您的帮助,但我没有使用jQuery或其他库。