【问题标题】:Annul event in another javascript document另一个 javascript 文档中的 Annul 事件
【发布时间】:2014-12-01 01:21:03
【问题描述】:

javascript中有两个文档我可以访问其他非,我不希望在这项工作中点击事件one.js,只有我的two.js。

    one.js // I dont have acess

    $(document).ready(function(e){
       $('.contentsummary .actions a').click(function(e){
          $('.contentsummary .items').css('top','2000px');
       );
    });


   two.js // My File JS

  $(document).ready(function(e){
       $('.contentsummary .actions a').click(function(e){
          $('.contentsummary .items').css('top','0');
       );
   });

【问题讨论】:

  • 那你为什么要加载one.js呢?

标签: javascript jquery


【解决方案1】:

您只需要在添加之前删除事件侦听器:

   $(document).ready(function(e){
       $('.contentsummary .actions a').off('click');
       $('.contentsummary .actions a').on('click', function(e){
          $('.contentsummary .items').css('top','0');
       );
   });

【讨论】:

    【解决方案2】:

    在添加另一个点击处理程序之前,您需要取消绑定点击处理程序:

    $(document).ready(function(e){
       $('.contentsummary .actions a').off('click').on('click',function(e){
          $('.contentsummary .items').css('top','0');
       );
    });
    

    关闭和开启方法的示例:http://jsfiddle.net/8c6po6ft/
    相关问题:How to overwrite jquery event handlers

    【讨论】:

      【解决方案3】:

      从 1.7 版本开始,.click() 方法在内部使用on() 来绑定事件处理程序

      因此您可以使用off() 删除现有的处理程序:

      .off() 方法删除使用 .on() 附加的事件处理程序

      $(document).ready(function(e){
         $('.contentsummary .actions a').off('click').on('click', function(e){
            $('.contentsummary .items').css('top','0');
         );
      });
      

      在 jQuery 1.7 之前,使用unbind():

      使用 .bind() 附加的事件处理程序可以使用 .unbind() 删除。

      $(document).ready(function(e){
         $('.contentsummary .actions a').unbind('click').bind('click', function(e){
            $('.contentsummary .items').css('top','0');
         );
      });
      

      附注:确保您的脚本在另一个脚本之后运行。

      【讨论】:

        【解决方案4】:

        虽然其他人建议如何解决设计问题带来的问题,但我建议您宁愿解决设计问题。

        如果有不应该运行的代码,您为什么要实际运行该代码?如果在您的新页面中您只需要two.jsone.js 的一个子集,不包括其中的某些部分,那么您应该进一步将您的代码分离到更多文件中。

        subset-of-one.js
        two.js
        

        拥有许多带有$.ready 的文件也是另一种不好的做法,但这可能超出了这个问题的范围。

        【讨论】:

          猜你喜欢
          • 2020-05-10
          • 2017-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-23
          • 2023-03-18
          相关资源
          最近更新 更多