Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JQuery的全局事件注册表_Jquery_User Interface_Events - Fatal编程技术网

使用JQuery的全局事件注册表

使用JQuery的全局事件注册表,jquery,user-interface,events,Jquery,User Interface,Events,我正在JQuery中开发一个基于AJAX的web应用程序,它包含许多GUI组件。有些应用程序状态会影响所有GUI组件 例如,在执行AJAX请求时,我希望我的工具栏按钮“冻结”,并且在请求完成之前不会触发任何单击事件。这同样适用于我的滑块控件和一些可拖动的GUI组件 为了简化应用程序状态之间的转换,我想开发一个全局事件注册表,该注册表提供以下功能: 每个gui组件都可以在注册表中注册、删除和触发其事件 暂停事件的能力(即,当我的应用程序状态处于特定状态时,解除事件绑定,然后自动重新绑定事件) 将

我正在JQuery中开发一个基于AJAX的web应用程序,它包含许多GUI组件。有些应用程序状态会影响所有GUI组件

例如,在执行AJAX请求时,我希望我的工具栏按钮“冻结”,并且在请求完成之前不会触发任何单击事件。这同样适用于我的滑块控件和一些可拖动的GUI组件

为了简化应用程序状态之间的转换,我想开发一个全局事件注册表,该注册表提供以下功能:

  • 每个gui组件都可以在注册表中注册、删除和触发其事件
  • 暂停事件的能力(即,当我的应用程序状态处于特定状态时,解除事件绑定,然后自动重新绑定事件)
  • 将应用程序状态与gui行为相匹配(例如,在绘图模式下,只有“退出绘图模式”按钮处于活动状态)

有人知道jQuery插件可以帮助我吗?

我将处理自定义事件的注册、触发和解除绑定

jQuery拥有注册、绑定和解除绑定自定义事件所需的所有工具

下面是一个将两个div连接到名为customAjaxStart的自定义事件的示例。然后我可以触发这个函数,两个处理程序都将被调用

快速演示-启用firebug/ie8控制台

e、 g

以上面的例子为例,我将从全局ajaxStart触发customAjaxStart。任何监听器都会在xhr调用即将进行时自动触发(非常适合禁用小部件或显示加载的gif等),例如

$( function() {

  $('#div1').bind('customAjaxStart', function(){
    console.log('#div1 ajax start fired');
    $(this).fadeTo('slow', 0.3);
  });

  $('#div2').bind('customAjaxStart', function(){
    console.log('#div1 ajax start fired');
    $(this).fadeTo('slow', 0.3);
  });

  //fire the custom event
  $.event.trigger('customAjaxStart');

  //unbind div1 from custom event
  $('#div1').unbind('customAjaxStart');

  //again trigger custom event - div1 handler will not fire this time
 $.event.trigger('customAjaxStart'); 
});
$.ajaxStart( function(){

    $.event.trigger('customAjaxStart');

});