在jQuery中管理多个事件处理程序

时间:2012-02-09 16:46:53

标签: javascript event-handling jquery-validate jquery

我有一个我正在处理的表单需要在输入失去焦点时触发多个事件,即模糊事件被触发。我无法管理需要响应的各种事件处理程序的顺序被称为。

每个表单输入标记都需要在模糊时发生各种事情。

  1. 各种自动格式化程序,例如确保名称以大写字母开头或根据复选框显示表单区域。
  2. jQuery验证。
  3. 发布验证功能,例如ajax调用
  4. 到目前为止,我提出的最好的方法是依靠事件冒泡系统。因此,确保使用jQuery.on()将来自第1点的所有事件附加到比验证规则更深入DOM的元素。 Jquery验证将事件侦听器附加到表单元素。

    惠斯特这有效,它有几个问题。它适用于我拥有的3类事件,当我有更多时,它可能会成为一个问题。

    是否存在人们与jQuery一起使用的发布者/订阅者类型系统,以使这种方式更容易?

1 个答案:

答案 0 :(得分:0)

您是否查看了自定义事件并解雇了这些事件?

例如,您可以在模糊代码完成后创建自定义“getMeMore”事件:

$(document).on('blur', '.myInputClass', function(){
    // do stuff for blur here
    $(this).trigger('getMeMore');//now trigger my event
});
$(document).on('getMeMore','.myInputClass',function(){
    //do my ajax to get me more here
});

编辑:基于评论:

选择器中的文档只是实时事件事件的锚点。请参阅此示例http://jsfiddle.net/MarkSchultheiss/qM2Mv/,其中我根据条件在另一个事件中触发自定义事件。观察数字(它加倍的地方)以查看其他事件何时触发。我知道这是解释,但希望它会给你一些工作。我在我的代码中执行此操作,以便我可以根据在一个事件触发的给定时间可能存在或可能不存在的其他条件来管理“何时”事件。这允许将事件触发器与事件管理分开,这是此处的重点。请注意我从不同的地方触发一些自定义事件。 (复选框值,并基于文本条目的长度)