jQuery:分配多个事件处理程序是非法还是坏的做法?

时间:2012-10-10 17:44:49

标签: javascript jquery event-handling onclick

  

可能重复:
  jQuery: more than one handler for same event

我正在使用一个创建两个按钮的jQuery滑块插件。这些按钮具有插件附加的点击事件,因为它们用于控制滑块。我创建了自己的mouseover \ mouseout事件,独立于插件(内联网页)来处理动画。我想创建一个用于单击(以便按钮改变颜色)。我会创建另一个单击事件处理程序来覆盖或破坏插件的功能吗?这是不好的做法,还有更好的方法吗?

5 个答案:

答案 0 :(得分:3)

有两个事件没问题。您可以根据需要为对象分配任意数量的事件。

这是合乎逻辑的,因为您很可能希望根据触发的事件触发不同的函数。并且99%的每个jQuery插件在处理具有多个事件的对象时都没有问题。如果您有任何问题,请尝试并提出问题。

唯一不好的是内联js;)

答案 1 :(得分:3)

它不会破坏已绑定的任何处理程序。 jQuery绑定的方式是使用事件注册模型,因此它支持多个事件处理程序。

这是使用addEventListeners/attachEvent而不是传统方法的优势之一。

更多阅读: https://stackoverflow.com/a/12627478/297641

答案 2 :(得分:1)

不是真的,但是如果你能在一个处理程序中处理所有功能,那么为什么不能呢?

答案 3 :(得分:1)

你应该没问题。只需使用jQuery的API添加自己的事件处理程序,就可以了。来自.on()上的jQuery文档:

  

从jQuery 1.4开始,同一个事件处理程序可以多次绑定到一个元素。

$('#myButton').on('click', myHandler)

答案 4 :(得分:0)

在某些情况下,我会说这是不好的做法。在单个元素上创建多个事件处理程序几乎总是可以避免的。如果你足够舒服,你可以随时打开插件的源代码(如果它不是缩小版本)并修改事件处理程序以包含你的修改。

如果你这样做很不舒服,那么我会说继续你在做什么。只要知道有更好的选择。

这假设您在插件已经有一个时添加了另一个点击事件绑定。

-Mike