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



我正在处理一个表单,当输入失去焦点时,需要触发多个事件,即模糊事件被触发。我在管理需要响应的各种事件处理程序的调用顺序时遇到了问题。

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

  1. 各种自动格式化程序,例如确保名称以大写字母开头,或根据复选框显示表单的区域
  2. jQuery验证
  3. 后验证函数,如ajax调用

到目前为止,我想出的最好的方法是依赖事件冒泡系统。因此,请确保使用jQuery.on()将来自点1的所有事件附加到比验证规则更深入DOM的元素。Jquery验证将事件侦听器附加到表单元素。

Whist这项工作有几个问题。它适用于我的三类事件,当我有更多的事件时,它很可能会成为一个问题。

有没有一种发布者/订阅者类型的系统,人们可以与jQuery一起使用,使这类系统更容易?

您看过自定义事件并启动这些事件吗?

例如,您可以在模糊代码完成后创建一个自定义的"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/其中我基于条件在另一个事件中激发自定义事件。观察数字(它翻倍的地方),看看其他事件何时启动。我知道这是可以理解的,但希望它能给你一些可以合作的东西。我在代码中这样做,这样我就可以根据其他条件来管理"何时"事件触发,这些条件在给定时间可能存在,也可能不存在。这允许将事件触发器与事件管理分离,这就是这里的要点。请注意,我从不同的地方触发了一些自定义事件。(复选框值,并基于文本输入的长度)

相关内容

  • 没有找到相关文章

最新更新