zoukankan      html  css  js  c++  java
  • jQuery的 .on()和 .one()

    ajax请求成功,页面弹出模态框,提示操作成功,几秒后自动消失,页面刷新。模态框大致效果:

    模态框代码:

    <style>
      #successModal { margin: 120px 0 0 340px;}
      #successModal{
        z-index:1000000; //z-index 属性设置元素的堆叠顺序。此处为了让该模态框不被遮盖,所以值设得比较大
      }
    </style>
    <div class="modal fade" id="successModal" tabindex="-1" role="dialog" aria-labelledby="successModalLabel" aria-hidden="true">
      <div class="modal-dialog">
        <div class="modal-content" style="200px;height:50px;">
          <p style="text-align:center;margin-top:10px;font-size:16px;">操作成功</p>
        </div>
      </div>
    </div>
    <script type="text/javascript">
    function successModalShow() {    
        $('#successModal').modal('show');
        $('#successModal').one('shown.bs.modal', function () {
            setTimeout(function(){$("#successModal").modal("hide")},1000);
        })
    }
    </script

    JS代码:

    $.ajax({ 
      type        : "POST"
      ,url         : url
      ,data        : data
      ,contentType : "application/x-www-form-urlencoded;charset=utf-8;"
      ,dataType    : "text"
      ,cache          : false
      ,success: function(str) {
        var info = eval('(' + str + ')');
        if (info.code == 1) {
          successModalShow();
          //当模态框调用 hide 实例方法时刷新页面,此处为带查询条件刷新
          $(
    '#successModal').on('hide.bs.modal', function () {         $('#queryform')[0].submit();       });     }     else {       alert(info.msg);     }   }   ,error : function(XMLHttpRequest, textStatus, errorThrown) {     alert(XMLHttpRequest.status + textStatus);   } });

    我举这个例子主要是想说明jQuery的.on()方法和.one()方法的区别:

      jQuery 提供的.on()方法,绑定事件后并不是自动移除事件的,需要通过.off()来手工移除。

      jQuery 提供的.one()方法,绑定元素执行完毕后自动移除事件,可以方法仅触发一次的事件。

      如果页面是局部刷新,并且每次刷新页面ajax请求成功都是一样的操作先弹出模态框然后刷新,那么就要用.one()

    $('#successModal').one('hide.bs.modal', function () {
      $('#queryform')[0].submit();
    }); 

      因为当使用 one() 方法时,每个元素只能运行一次事件处理器函数,也就是说只会执行一次刷新操作。如果用.on(),在调试代码的时候会发现页面会多次刷新,第一次是带查询条件刷新,后面的都是不带查询条件刷新

  • 相关阅读:
    (七)执行上下文和词法作用域&动态作用域案例分析
    (六)js的arguments
    (五)关于解构赋值
    (四)JavaScript深入之词法作用域和动态作用域
    jmeter获取token并请求失败Internal authentication failed 400
    jmeter造当前时间,未来时间,历史时间
    jmater分布式压力测试总结
    敏捷测试-基本流程
    致我测试之路的“七年之痒”
    jmeter解决登录token获取
  • 原文地址:https://www.cnblogs.com/llfddmm/p/7886013.html
Copyright © 2011-2022 走看看