Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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
Javascript 我应该如何组织jquery代码以使其干燥?_Javascript_Jquery - Fatal编程技术网

Javascript 我应该如何组织jquery代码以使其干燥?

Javascript 我应该如何组织jquery代码以使其干燥?,javascript,jquery,Javascript,Jquery,我正在努力研究如何组织我的jquery代码 我有以下职能: function Function1() { $('a').not('a.dialog').click(function(event){ // Do something. }); }; function Function2() { $('a.dialog').click(function () { // Do something. }); }; Function1在每个页面上调用,function2仅

我正在努力研究如何组织我的jquery代码

我有以下职能:

function Function1() {
  $('a').not('a.dialog').click(function(event){
    // Do something.
  });
};

function Function2() {
  $('a.dialog').click(function () {
    // Do something.
  });
};
Function1在每个页面上调用,function2仅在单个页面上调用

消除这两个功能之间重复的最佳方法是什么?特别是对“a.dialog”的引用

我应该使用全局变量吗?或者上面的代码是我所希望的最好的代码

------------------更新------------------

这两项功能的具体内容如下:

函数1执行以下操作:


函数2打开一个对话框。

一种方法可以是这样做:

function Function1() {
  $('a').click(function(event){
     if($(this).is('.dialog')) //or .hasClass('dialog')
         //...
     else //...
  });
};
$('a').click(function(){
    alert('work');
})

$('.dialog').unbind().click(function(){
    alert('really work')
})
减少如果


Fiddle:

我认为这实际上取决于函数的功能……一个简单的内部if检查可以对这两个函数都起作用。您可以将函数移动到单独的js。为什么不使用一个包含这两个函数的脚本文件,并将其包含在两个页面中?顺便说一句,考虑到http请求和连接的速度很慢,对同一个小函数进行两次解析可能更有效。
$('a')。单击(function(){if($(this).hasClass('dialog')){DO SOMETHING..}…
@epascarello-请查看我的更新。这将起作用,但我更希望保持两个功能之间的分离。此外,此解决方案将为站点上的大多数页面引入“如果”开销。在“如果”部分(用于对话框)如果你想要分离,那么你可以调用设置在特定页面内的外部函数,而不是你认为首先为什么需要将它们组合起来!@epascarello-以避免重复,因为这更可能会引入错误。同时也避免重复搜索的开销。不要担心
如果
开销,你可以执行几十或几百次在达到可感知的100毫秒延迟阈值之前,执行了数百万次…“从jQuery 1.7开始,.on()和.off()方法优先用于附加和删除元素上的事件处理程序。”-仅供参考。我想它们最终会被弃用。