【问题标题】:jquery add more to a click functionjquery 为点击功能添加更多内容
【发布时间】:2009-12-01 09:03:58
【问题描述】:

我有一个函数绑定到每个页面上加载的一些 Javascript 文件中的页面对象。

我需要为已定义的事件处理程序添加更多功能。这是我的意思的一个例子。

具有当前定义的点击事件的对象关闭屏幕上出现的弹出 div。单击此按钮时(仅在此特定页面上),我需要它来重置页面上的某些元素。

所以,我可以轻松地取消绑定单击事件,并重新绑定自定义事件,但它会从原始关闭事件中复制大量代码。

如果情况变得更糟,我可以这样做,但我想避免为这种特殊情况复制该代码。

有没有办法在当前创建的事件上附加更多代码?

感谢您的任何见解!

【问题讨论】:

    标签: jquery events binding


    【解决方案1】:

    只需绑定另一个处理程序与添加的功能

    【讨论】:

      【解决方案2】:

      您可以使用事件委托。谷歌一些教程的术语

      基本上通过将事件绑定到父不可变元素然后决定被点击的子元素的动作来工作。这样您就可以添加/删除子类型 x 而无需绑定/重新绑定操作。

      $("#parent_global_div").click( function (ev) {
         var el = $(ev.target);
         if( el === x){
             //do something
         }
      

      });

      【讨论】:

        【解决方案3】:

        将点击事件设置为函数,例如

        $(element).click(function(){//do stuff in here});
        

        你可以在函数位中添加你想要的调用更多函数或其他任何东西。

        【讨论】:

          【解决方案4】:

          您可以使用“绑定”,然后点击方法可以对所有这些绑定事件调用“触发器”。

          【讨论】:

            【解决方案5】:

            事件在 jquery 上排队,因此所有分配/绑定事件都会被调用。如果出于特定原因您只需要绑定/取消绑定特定的排队事件,请为该事件命名。

            $('button').click(function(){alert(1);});
            $('button').click(function(){alert(2);});
            //The 2 function gets called when the button is clicked 
            
            $('button').unbind('click');//all handlers are removed.
            
            
            //Namespaced event
            $('button').click(function(){alert(1);});
            $('button').bind('click.custom',function(){alert(2);});
            //The 2 function gets called when the button is clicked 
            
            
            $('button').unbind('click.custom');//only the click.custom is unbind
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-08-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-02-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多