基于layer封装的异步加载分部视图弹出层

背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的。所以下面的方法就解决了。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <title></title>
    <meta charset="utf-8" />

    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <script src="jquery-1.10.2.js"></script>
    <script src="layer/layer.js"></script>

    <script>
        layer.loading = function (url, opt) {
            var cid = layer.load(0, { shade: false }); //0代表加载的风格,支持0-2
            $.ajax({
                url: url,
                success: function (content) {
                        layer.close(cid);
                        opt.content = content;
                        layer.open(opt);

                }
            });
        }

        layer.alertP = function (content, options, yes) {
            var type = typeof options === ‘function‘;
            if (type) yes = options;
            return layer.open($.extend({
                content: content,
                skin: ‘layui-phone-alert‘,
                title: ‘‘,
                closeBtn: 0,
                yes: yes
            }, type ? {} : options));
        }

        layer.confirmP = function (content, options, yes, cancel) {
            var type = typeof options === ‘function‘;
            if (type) {
                cancel = yes;
                yes = options;
            }
            return layer.confirm(content, $.extend({
                content: content,
                skin: ‘layui-phone-confirm‘,
                title: ‘‘,
                closeBtn: 0,
                yes: yes,
                btn2: cancel
            }, type ? {} : options));

        }

    </script>

    <script>
        //d1跟d6类似,只不过多了个type,但是d6Alert时不会关闭当前弹出层,d1会,所以我一般用d6(记得加padding,因为d6默认没有padding),以P结尾的表示对手机端弹出的封装
        function d1() {
            layer.loading("part.html", {
                title: ‘异步加载!‘,
                maxWidth: 600,
                type: 1,
                success: function () {
                    alert(1);
                },
                btn: [‘确定‘, ‘取消‘],
                btn1: function (index, layero) {
                    //按钮【按钮一】的回调
                    layer.alert("弹窗内容,告知当前状态、")
                },
                btn2: function (index, layero) {
                    //按钮【按钮二】的回调

                    //return false 开启该代码可禁止点击该按钮关闭
                }

            });

        }

        function d6() {
            layer.loading("part.html", {
                title: ‘异步加载!‘,
                maxWidth: 600,
                btn: [‘确定‘, ‘取消‘],
                btn1: function (index, layero) {
                    //按钮【按钮一】的回调
                    layer.alert("弹窗内容,告知当前状态、")
                },
                btn2: function (index, layero) {
                    //按钮【按钮二】的回调

                    //return false 开启该代码可禁止点击该按钮关闭
                }
            });
        }

        function d4() {

            layer.confirm(‘确定要删除吗?‘, { icon: 3 }, function () {

                layer.msg(‘删除成功‘, { time: 200000 });
            });

        }

        function d2() {
            layer.alert("弹窗内容,告知当前状态、")
        }

        function d3() {

            layer.alertP("layer是一款口碑极佳的web弹层组件,她具备全方位的解决方案。");

        }

        function d5() {

            layer.confirmP(‘确定要删除吗?‘, function () {

                layer.msg(‘删除成功‘, { icon: 1 });
            });

        }

    </script>

</head>
<body>
    <button type="button" onclick="d2()">普通对话框</button>
    <button type="button" onclick="d4()">提示是否</button>
    <button type="button" onclick="d3()">手机对话框</button>
    <button type="button" onclick="d5()">手机对话框是否</button>

    <button type="button" onclick="d1()">异步提示框1</button>

    <button type="button" onclick="d6()">异步提示框2</button>
</body>
</html>
时间: 2024-08-03 07:00:28

基于layer封装的异步加载分部视图弹出层的相关文章

bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题

答案来自老外http://stackoverflow.com/questions/14795035/twitter-bootstrap-modal-blocks-text-input-field $('#myModal').on('shown', function() { $(document).off('focusin.modal'); }); 这个是国内同学的解决方法: http://www.oschina.net/question/226830_143869 //显示modal $('#m

MVC通过JsonResult返回Json数据,然后在视图页面中通过@Html.Partial()方法加载分部视图

首先,新建一个MVC类型的Web项目: 然后在Model文件夹下定义一个Student实体: public class Student { public int ID { get; set; } public string Name { get; set; } public string Sex { get; set; } public int Age { get; set; } } 然后新建一个Student控制器: using JsonDataWithMVC.Models; using Sy

winform 加载窗体时弹出另一个窗体并显示进度条的源码

winform 加载窗体时弹出另一个窗体并显示进度条的源码 //frmA: 源窗体 //------------------------------------------ //引用 using System.Threading; BackgroundWorker worker; public frmA() { InitializeComponent(); worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandl

基于jQuery的图片异步加载和预加载实例

如今的网页中有很多图片,比如相册列表,那么如果一次性读取图片将会瞬间加重服务器的负担,所以我们用jQuery来实现图片的异步加载和预加载功能,这样在页面的可视范围内才会加载图片,当拖动页面至可视界面时,其他图片才会加载,改插件很好地实现了图片异步加载功能. 在线预览   源码下载 html代码部分: <div id="content"> <div id="button"> <ul> <li>小图</li>

关于异步加载的 javascript 不出现在 chrome 开发者工具的 source 中的解决方法

首先,当你看到这篇文章时,我相信你已经是一个中级甚至是高级的前端开发了. 因为异步加载 javascript 这样的做法,在一些中小型项目几乎是看不到的. 而异步加载 javascript 归根到底,是为了性能优化,防止 JS 加载造成页面阻塞. 会注意到性能,说明你已经不再是一个停留在实现层面的前端开发了,而是一个有着更高追求的人. 在此,向所有有追求的人点赞~~~ 昨天为公司的项目做前端优化,其中一项就是做脚本异步加载. 但是奇怪的是,异步加载的 js 出现在 chrome 开发者工具的 n

用JS实现加载页面前弹出模态框

主要的JavaScript 代码是: <script> //加载模态框 $('#myModal').modal(); $(document).ready(function () { $("#select").bind("change",function(){ if($(this).val()==0){ return; } else{ $("p").text($(this).val()); } }); }); //选择触发事件 func

react16.8 antd按需加载配置(已经弹出和未弹出分别的配置)

误区,antd按需加载同样是需要先安装antd,只是通过插件的配置实现不用再进行样式的引入,可以直接引用antd组件进行开发 怎样判断按需加载配置成功?通过组件引用的判断,在不引入antd样式的前提下,直接引入,使用组件,看组件样式是否有效,如果生效则按需加载配置成功 完成的配置流程 安装antd npm i antd --save 安装babel-plugin-import插件 npm -s install babel-plugin-import 配置webpack,因为现在的时候,我的web

JS异步加载的三种方式

js加载的缺点:加载工具方法没必要阻塞文档,过得js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作. 有些工具方法需要按需加载,用到再加载,不用不加载,. 默认正常模式下下,JS是同步加载的,即优先记载JS,只有当JS文件下载完,dom和css才开始加载,当某些事后我们需要JS异步加载,我们可以通过以下方式来设置异步加载,不同情况下选取不同方式即可 1.defer:defer JS异步下载,dom结构解析完(标签 + 样式(内容不一定下载完))才异步执行 仅I

使用Android新式LruCache缓存图片,基于线程池异步加载图片

import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import a