jquery多个事件处理程序

我已经根据我正在处理的最新项目中的类名来定义事件处理程序。

对于前 具有类名“foo”的所有元素应以特定方式响应change事件。 并且所有类名为“bar”的元素都应以其他方式响应。

现在我的一些元素属于两个类,即class =“foo bar”,它们应该以两种方式响应。 现在,只调用了一个事件处理函数。

如何同时执行两个响应。

这取决于你如何约束事件。 如果你通过jQuery绑定它们而不是通过x.onchange = function() { ... }覆盖处理程序 – 所有绑定的事件处理程序都将被执行。 这是因为jQuery将事件处理程序排队 ,而不是覆盖以前的绑定。

检查这个fiddle ,看看多个事件被触发

检查这个fiddle ,看看如何覆盖事件处理程序,导致只触发最后一个绑定的处理程序

你想要的是“行为”模式的变化。

它允许您自动处理具有给定类或其他属性的元素上的事件。

通常的实现是在“document”上监听事件,然后通过event.target定义动作。

例如:小提琴( http://jsfiddle.net/PRkAr/

 $(document).on('click change', '.foo.bar', function(e) { var classes = this.className.split(/\s+/); $.each(classes, function(i, cls) { handle(e, this, cls); }) }) function handle(e, elem, cls) { // example: Event type click on elem DIV with class foo alert("Event type " + e.type + " on elem " + elem.tagName + " with class " + cls); } 

这里函数句柄处理具有您选择的类的元素的所有事件。 如果您想添加其他事件或类,只需将它们附加到“on”列表中即可。