• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > 基于Layer+jQuery的自定义弹框

基于Layer+jQuery的自定义弹框

作者:Yiyuery 字体:[增加 减小] 来源:互联网

Yiyuery 通过本文主要向大家介绍了Layer,jQuery,弹框等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

目的:XXXX项目中,很多的弹窗是利用freemarker的网页标签追加的形式实现的,网页弹框只是将隐藏的div显示出来,这样会使网页在预加载时速度变慢,增加页面加载和响应时间

解决方法如下:<已分中心管理的添加分中心弹框实现机制为例>

1.弹框页面部分的html代码和css抽离

html : html/configure/layer-win/_group-add-layer.html
css : css/common/componnentWin.css <自定义弹窗通用样式>
子层html: _group-add-layer.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>group Add</title>
</head>
<link rel="stylesheet" type="text/css" href="../../../js/lib/datePicker/skin/WdatePicker.css" />
<link rel="stylesheet" type="text/css" href="../../../css/common/componnentWin.css" />
<body>
  ····
</body>
<script type="text/javascript" src="../../../js/jquery-1.9.1.js"></script>
<script type="text/javascript" src="../../../js/lib/layer/layer.js"></script>

<script type="text/javascript" src="../../../js/scooper/scooper.tool.xiacy.js"></script>
<script type="text/javascript" src="../../../js/configure/layer-win/group-new-add.js"></script>
<script type="text/javascript">

</script>
</html>

父层html : group-manager.html

<#include "/html/config/configure.html"/>
<@menuConfig likey="stationGroup">

    <link rel="stylesheet" type="text/css" href="${contextPath}/css/configure/group-manager.css" />
    <link rel="stylesheet" type="text/css" href="${contextPath}/css/lib/userLibs/page-plugin.css">

    <script type="text/javascript" src="${contextPath}/js/lib/layer/layer.js"></script>    
    <script type="text/javascript" src="${contextPath}/js/lib/userLibs/page-load.js"></script>
    <script type="text/javascript" src="${contextPath}/js/scooper/scooper.tool.xiacy.js"></script>   
    <script type="text/javascript" src="${contextPath}/js/configure/group-manager.js"></script>  

  ·····
</@menuConfig>

通用弹窗 html :

 <div id = "addNewGroupWin" class = "capsule-win show">
    <div class = "capsule-win-top" title = "添加分中心"><span>添加分中心</span></div>
    <div class = "capsule-win-center">
      <div class = "capsule-item" id = "oldDevSearch">
        <div class = "item-left input_required" >名称</div>
          <div class = "item-right">
          <input id = "newGroupName" class = "sc_validate" title = "分中心名称" type="text" placeholder="请输入分中心名称" scvalidate='{"required":true,"format":"string"}'/>                   
          </div>         
      </div>       
      <div class = "capsule-item">
        <div class = "item-left input_required">经度</div>
        <div class = "item-right">
          <input id = "newGroupLng" class = "sc_validate" title= "分中心经度" type="text" placeholder="请输入0-180的数字" scvalidate='{"required":true,"format":"lng"}'/>          
        </div>
      </div> 

      <div class = "capsule-item">
        <div class = "item-left input_required">纬度</div>
        <div class = "item-right">
          <input id = "newGroupLat" class = "sc_validate" title = "分中心纬度" type="text" placeholder="请输入0-90的数字" scvalidate='{"required":true,"format":"lat"}'/>          
        </div>
      </div>

      <div class = "capsule-item" id = "processSNOLDIV">
        <div class = "item-left input_required">描述</div>
        <div class = "item-right">
          <textarea id = "newGroupDesc" class = "sc_validate" title = "分中心描述" scvalidate='{"required":true,"format":"string"}'></textarea>
        </div>
      </div>         
    </div>
    <div class = "capsule-win-bottom">
       <input id="addNewGroupSure" class = "btn-bottom centerfix btn-succ" type="button" value="确定"/>
       <input id="addNewGroupCancle" class = "btn-bottom btn-cancel" type="button" value="取消"/>     
    </div>
   </div>

2.子父层都需要引入layer.js

3.子层js

/**
 * <分中心管理>
 * 添加分中心
 * Author  :  Yiyuery
 * Date   :  2016/10/19 
 */
;(function($,w,document,undefined){
  $(document).ready(function(){
    validatorInit();
    clickEventBind();
  });

  var addGroupValidator = new Validator();
  var contextPath = "/ZJDZYW";

  /**
   * 表单验证初始化
   * @returns
   */
  function validatorInit(){
    addGroupValidator.init(function(obj, msg){
      layer.tips(msg,obj,{
         style: ['background-color:#78BA32; color:#fff', '#78BA32'], 
         maxWidth:185, 
         time: 2000,          
         tips: 1,
        });
    });
  }
  /**
   * 点击事件绑定
   * @returns
   */
  function clickEventBind(){
    addNewGroupClick();
  }

  /**
   * 分中心相关点击事件
   * @returns
   */
  function addNewGroupClick(){
    $("#addNewGroupSure").click(function(){
      addNewGroupSure();     
    });
    $("#addNewGroupCancle").click(function(){
      addNewGroupCancle();      
    });   
  }

  /**
   * 添加新的分中心 [确定]
   * @returns
   */
  function addNewGroupSure(){
    validatorInput();      
  }
  /**
   * 添加分中心 [取消]
   */
  function addNewGroupCancle(){    
    closeLayerWin();  
  }

  /**
   * 关闭当前打开的layer弹窗
   */
  function closeLayerWin(){
    var index = parent.layer.getFrameIndex(window.name); 
    parent.layer.close(index); //再执行关闭 
  }

  /**
   * 表单提交输入验证
   */
  function validatorInput(){
    /**
     * 输入校验
     */
    if(!addGroupValidator.validate("addNewGroupWin")){
      return;
    }    
    var paras = {
        "group_name"  : $("#newGroupName").val(),
        "longitude"   : $("#newGroupLng").val(),
        "latitude"   : $("#newGroupLat").val(),
        "group_desc"  : $("#newGroupDesc").val(),
      };
    $.ajaxSettings.async = false ;
    $.getJSON(contextPath+"/stationGroup/add", paras, function(resp){         
      if(resp.code !=undefined && resp.code == 0){
        console.log("分中心列表刷新!");
      }
    }); 
    $.ajaxSettings.async = true ;
    closeLayerWin();
  }
})(jQuery,window,document);

4.父层js

$("#addGroup").click(function(){        
  layer.config({
    path : '${contextPath}/js/lib/layer'
  });
  index = layer.open({
    type: 2,
     area: ['520px', '400px'],
     fix: false, //不固定
     title: '',
     maxmin: false,
     scrollbar:false,
     shade:0.5,
     shadeColse:true,
     content:capsule.request.path.groupMan.layer.groupManAddLayerShow,       
     end:function(){
       loadGroupCenterInfo();
     }
  });

});

loadGroupCenterInfo :父层js的方法,在关闭layer弹窗时调用父层方法刷新分中心列表

5.父层的layer弹窗此处是无法跳出父页面的所嵌套的iframe的,由于添加分中心的操作loadGroupCenterInfo,中嵌套着点击事件的重新激活clickEventInit该方法不是全局的,无法通过end传递到父页面中再次执行

  /**
   * 加载分中心
   */
  function loadGroupCenterInfo(){
    $.ajaxSettings.async = false ;
    $.getJSON(capsule.request.path.groupMan.getJson.loadCenterGroup,{},function(data){
      $("#groupCenterArea").empty();
      $.each(data.list,function(i,obj){
        groupMap.setKeyValue(obj.id,obj.group_name);
        var count = obj.c_num;
        if(obj.c_num == null || obj.c_num == "null"){
          count = 0;
        }
        var html = '<di



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于LayUI实现前端分页功能的方法
  • jQuery、layer实现弹出层的打开、关闭功能
  • jQuery中layer分页器的使用
  • jQuery插件JWPlayer视频播放器用法实例分析
  • jQuery使用Layer弹出层插件闪退问题
  • 基于jPlayer三分屏的制作方法
  • 基于Layer+jQuery的自定义弹框
  • 深入理解jQuery layui分页控件的使用
  • jquery插件Jplayer使用方法简析
  • Validform+layer实现漂亮的表单验证特效

相关文章

  • setInterval与clearInterval的使用示例代码
  • ajax+jQuery实现级联显示地址的方法
  • jQuery中复合属性选择器用法实例
  • jQuery Easyui 验证两次密码输入是否相等
  • JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
  • 基于jquery的无刷新分页技术
  • JQuery 选择和过滤方法代码总结
  • 一个关于jqGrid使用的小例子(行按钮)
  • jQuery开发者都需要知道的5个小技巧
  • jquery 之 $().hover(func1, funct2)使用方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jquery实现marquee效果(文字或者图片的水平垂直滚动)
    • JQuery实现样式设置、追加、移除与切换的方法
    • jquery 查找select ,并触发事件的实现代码
    • jquery加载图片时以淡入方式显示的方法
    • 轻松搞定jQuery.noConflict()
    • jquery实现页面常用的返回顶部效果
    • jQuery标签编辑插件Tagit使用指南
    • jQuery fadeOut 异步实例代码详解
    • innerHTML与jquery里的html()区别介绍
    • Jquery获取第一个子元素简单实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有