jQuery封装$.ajax实现前端锁屏与解屏功能

作者:键盘侠

时间:2026-10-28

浏览:538

本文介绍如何通过封装jQuery的$.ajax方法实现前端页面锁屏功能。通过自定义doPost插件,在发起异步请求时自动显示遮罩层和加载动画,请求结束后自动解屏。包含完整的CSS样式、HTML结构及JavaScript调用示例,适用于需要防止用户重复提交或提升交互体验的场景。

文章目录

jQuery锁屏插件源码实现

以下是实现该功能的jQuery插件核心源码。该插件旨在对原生$.ajax进行封装,从而在请求过程中加入锁屏逻辑。主要参数包括:isAsync(是否异步,默认true)、isLock(是否启用锁屏,默认true)以及isCache(是否启用浏览器缓存,默认false)。


/**
* 对jquery中$.ajax进行封装,以便加入锁屏功能
* isAsync 是否为异步请求,默认为true
* isLock 是否锁屏,默认是true
* isCache 是否从浏览器缓存中加载信息,默认是fasle
***/
;(function($) {
$.fn.doPost = function(settings) {
settings = jQuery.extend({
isAsync:true,
type : "post",
url : null,
dataType : null,
data : null,
success : null,
error : toError,
isLock : true,
isCache : false
}, settings);
$(this).each(function(){
if(settings.isLock){
lockSrc();
}
$.ajax({
async:settings.isAsync,
type:settings.type,
url:settings.url,
dataType:settings.dataType,
data:settings.data,
cache:settings.isCache,
success:function(msg){
if(settings.isLock){
unlockSrc();
}
settings.success(msg);
},
error:settings.error
});
}); 

//锁屏方法
function lockSrc(){
$(".lockDiv").css({"opacity":"0.5"}).fadeIn('normal');
var scrollWidth = document.documentElement.clientWidth;//document.body.clientWidth;
var scrollHeight =document.documentElement.clientHeight; // document.body.clientHeight;
var divWidth = $(".lockDivInfo").width();
var divHeight = $(".lockDivInfo").height();
var divLeft = scrollWidth/2-divWidth/2;
var divTop = scrollHeight/2-divHeight/2;
//console.log("bodyWidth="+scrollWidth+",bodyHeight="+scrollHeight+",divHeight="+divHeight+",divWidth="+divWidth+",left="+divLeft+",top="+divTop);
$(".lockDivInfo").css({"position":"absolute","top":divTop,"left":divLeft}).fadeIn('normal');
}
//解屏方法
function unlockSrc(){
$(".lockDivInfo").fadeOut('normal');
$(".lockDiv").fadeOut('normal');
}
function toError(){
alert("操作失败!");
} 
};
})(jQuery);

锁屏功能的视觉呈现依赖于特定的CSS样式定义。主要包含两个遮罩层:.lockDiv用于覆盖整个页面,设置宽高为100%,背景色为#DFE8F6,层级z-index为10;.lockDivInfo用于显示加载动画,定位在左上角,层级z-index为11。此外,#CloseDiv定义了加载图标的位置和大小。

锁屏CSS样式定义


/*
锁屏
*/

.lockDiv {
width: 100%;
height: 100%;
display: none;
z-index: 10;
background-color: #DFE8F6;
position: absolute;
top: 0px;
left: 0px;
}
.lockDivInfo {
width: 50px;
height: 2px;
display: none;
position: absolute;
left: 0px;
top: 0px;
z-index: 11
}
#CloseDiv {
float: right;
width: 100px;
height: 100px;
margin-top: 10px;
margin-right: 10px;
}

<div class="lockDiv"></div>
<div class="lockDivInfo" >
<img id="CloseDiv" src="/hnhd/images/circle_animation.gif"></img>
</div>

前端调用示例

在实际业务代码中,可以通过调用封装好的doPost方法来发起请求。例如,在查询按钮点击事件中,构建包含type、url、data等参数的配置对象,并调用$("#queryBtn").doPost(settings)。该方法会自动处理锁屏显示与隐藏,无需手动控制UI状态。


//查询
$("#queryBtn").click(function(){
selecCheckByRegionApp.query();
});

var selecCheckByRegionApp={};
selecCheckByRegionApp.query=function(){
var settion={
type:"post",
url: 'selfCheckStatisticAction!findByRegion' ,
dataType:"text",
data:$("#searchForm").formSerialize(),
success:function(msg){
$("#contentDiv").html(msg);
}
};
$("#queryBtn").doPost(settion);
}

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章