分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

Jquery防止重复点击,显示加载中.

发布时间:2023-09-06 01:54责任编辑:苏小强关键词:暂无标签

$.LoadEvents("showLoading",$("#tt"),"#902D2D");

$.LoadEvents("hideLoading",$("#tt"));

原生代码:

!(function ($) { ???$.extend({ ???????"LoadEvents": function (eventType, $parent, loadColor, bgColor, opacity, fn) { ???????????switch (eventType) { ???????????????case "showLoading": { ???????????????????if($(document.head).find(‘#css_loader‘).length == 0){ ???????????????????????$(document.head).append(‘<link rel="stylesheet" type="text/css" id="css_loader" href="loader.css">‘); ???????????????????} ???????????????????var loaderTargets = []; ???????????????????var $body = $(document.body); ???????????????????var _bgColor = ‘rgba(238,238,238,0.5)‘; ???????????????????var _opacity = 1; ???????????????????var _loadColor = ‘#67CF22‘; ???????????????????if (typeof(bgColor) != "undefined") { ???????????????????????_bgColor = bgColor; ???????????????????} ???????????????????if(typeof(opacity) != "undefined") { ???????????????????????_opacity = opacity; ???????????????????} ???????????????????if($parent.find("#events_loader").length == 0){ ???????????????????????// 可以有多个加载实例,所以需要用loaders管理 ???????????????????????var $loader = $("<div id=‘events_loader‘></div>").css({ ???????????????????????????background: _bgColor, ???????????????????????????opacity:_opacity, ???????????????????????????position: ‘absolute‘, ???????????????????????????top: 0, ???????????????????????????left: 0, ???????????????????????????width: ‘100%‘, ???????????????????????????height: ‘100%‘ ???????????????????????}); ???????????????????????// loading动画 ???????????????????????var $icon = $(‘<div class="spinner">‘+ ???????????????????????????‘<div class="rect1"></div>‘+ ???????????????????????????‘<div class="rect2"></div>‘+ ???????????????????????????‘<div class="rect3"></div>‘+ ???????????????????????????‘<div class="rect4"></div>‘+ ???????????????????????????‘<div class="rect5"></div>‘+ ???????????????????????????‘</div>‘); ???????????????????????if(typeof(loadColor) != "undefined") { ???????????????????????????_loadColor = loadColor; ???????????????????????} ???????????????????????$icon.children().css({"background":_loadColor}); ???????????????????????$loader.append($icon); ???????????????????????$parent.append($loader); ???????????????????} ???????????????????break; ???????????????} ???????????????case "hideLoading": { ???????????????????$parent.find("#events_loader").remove(); ???????????????????break ???????????????} ???????????} ???????} ???})})(jQuery);

CSS

.spinner { ???width: 60px; ???height: 60px; ???text-align: center; ???font-size: 10px; ???position: absolute; ???top: 50%; ???left: 50%; ???transform: translate(-50%,-50%);}.spinner > div { ???height: 100%; ???width: 6px; ???display: inline-block; ???margin-left: 6px; ???-webkit-animation: stretchdelay 1.2s infinite ease-in-out; ???animation: stretchdelay 1.2s infinite ease-in-out;}.spinner .rect2 { ???-webkit-animation-delay: -1.1s; ???animation-delay: -1.1s;}.spinner .rect3 { ???-webkit-animation-delay: -1.0s; ???animation-delay: -1.0s;}.spinner .rect4 { ???-webkit-animation-delay: -0.9s; ???animation-delay: -0.9s;}.spinner .rect5 { ???-webkit-animation-delay: -0.8s; ???animation-delay: -0.8s;}@-webkit-keyframes stretchdelay { ???0%, 40%, 100% { ???????-webkit-transform: scaleY(0.4) ???} ???20% { ???????-webkit-transform: scaleY(1.0) ???}}@keyframes stretchdelay { ???0%, 40%, 100% { ???????transform: scaleY(0.4); ???????-webkit-transform: scaleY(0.4); ???} ???20% { ???????transform: scaleY(1.0); ???????-webkit-transform: scaleY(1.0); ???}}

实现效果

引伸:$.extend({}),(function(){})(jQuery)的使用;

$.extend()深拷贝,浅拷贝的作用;

因为其本身存在一些重载原型

举个栗子:

var dog1={height:"60cm",age:3,color:{head:"yellow",body:"white"}};

var dog2={sex:"female",color:{body:"red"}};

var dog=$.extend(dog1,dog2);//默认false

var dog1=$.extend(true,dog1,dog2);

var dog2=$.extend(false,dog1,dog2);

//输出结果:

dog={height:"60cm",age:3,sex:"female",color:{body:"red"}};

dog1={height:"60cm",age:3,sex:"female",color:{head:"yellow",body:"red"}};

dog2={height:"60cm",age:3,sex:"female",color:{body:"red"}};

(function(){})(jQuery)有关匿名立即执行函数的理解;

(function(arg){...})(param),这个定义了一个带有arg参数的匿名函数,然后再通过param方法调用执行;

其实也就是相当于Var fuc =  function(){};fn(param)。Jquery也是一样的操作。

$.extend()还可以针对jquery进行二次自定义封装方法

当你想要开发一个公用插件的时候就可以通过这种方式结合实现。

比如我想要将原生的js属性封装到自己的jquery里面去

举个栗子:将原生的document.getElementsByTagName封装给jquery去使用

JS模块

(function($){

    $.extend({

        "getTagname" : function(colval){

            var tagname = document.getElementsByTagName(colval);

            return tagname;

        }

    });

})(jQuery);

var tagval = $.getTagname("h1")[0];

console.log("tagval="+tagval.innerText);

Html模块

<h1>黄大大</h1>

上诉的LoadEvents也是同样的方法来封装实现的,主要介绍原理,实现可以自己尝试或留言询问。

Jquery防止重复点击,显示加载中.

原文地址:https://www.cnblogs.com/b-code/p/9042432.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved