zoukankan      html  css  js  c++  java
  • jQuery插件轻量弹出层UIDialog

    参数解释:

    id         :null,  // 需要赋值的ID
    callOnOpen :null,  // 弹出后调用方法
    callOnClose:null,  // 关闭后调用方法
    eventType  :null,  // 事件类型 click, blur, change, dblclick, error, focus, load, mousedown, mouseout, mouseup
    idContent  :null,  // 需要添加的id
    width      :'auto', // 宽
    height     :'auto', // 高
    title      :'消息',  // 标题
    content    :'测试内容'  // 内容

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title>test</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <style type="text/css">
    *{ margin:0; padding:0;}
    body{font:12px/2 arial; background:#ccc;}
    a{color:#0029c4;text-decoration:none;}
    a:hover{color:#c00;}
    .wrap{ border:2px solid #aaa; background:#fff; padding:20px;}
    /* uidialog */
    .ui-dialog{position:fixed;min-150px;background:#fff;overflow:hidden;z-index:99999;border:5px solid #767576;}
    .ui-dialog h1{*margin-top:-3px;position:relative;text-indent:1em;padding:3px 0;font-size:14px;font-weight:normal;background:#efefef;border-bottom:1px solid #ccc;-moz-user-select:none;/* FF禁止选择文字 */-webkit-user-select:none;/* Chrome禁止选择文字 */}
    .ui-dialog h1 .ui-close{position:absolute;right:10px;cursor:pointer;text-indent:0;}
    .ui-dialog-body{ padding:10px;}
    .ui-title{ border-bottom:1px solid #ccc; background:#f0f0f0;}
    .ui-mask{position:absolute;left:0;top:0;z-index:77777;background:#000;filter:alpha(opacity=50);opacity:0.5;}
    /* 模拟IE6 position:fix的效果 From: http://www.blueidea.com/tech/web/2010/7665.asp */
    *html{background:url(*) fixed;}
    *html body{margin:0;height:100%;}
    .wrap{ 500px; margin:40px auto;}
    </style>

    </head>
    <body>
    <div class="wrap">
    <h2>特点:接口丰富、轻便、弹出层上层、单击遮罩层关闭。</h2>
    <ol>
    <li>
    <h1>测试 $.fn.UIDialog 调用,并弹出层上层</h1>
    <a href="javascript:void(0)">测试a链接1</a>
    <table class="tab" style="display:none;">
    <tr>
    <th>用户名:</th>
    <td><input type="text" name="" id="useranme"></td>
    </tr>
    <tr>
    <th></th>
    <td><input id="mybtn" type="submit" value="又是一个新的"></td>
    </tr>
    </table>
    </li>
    <li>
    <h1>测试弹出 next() 的内容</h1>
    <a href="javascript:void(0)">测试a链接2</a>
    <div>
    <p>扯面是一种陕西和山西的传统面食小吃,已有3000年。主要原料:上白面粉、鸡蛋、菠菜、红萝卜、调味品。</p>
    <p>做扯面,和面的技术是最关键的。和面过程中有几个关键点:首先水和面的比例是一个关键,做扯面要求和的面最软,揪片次之,手擀面、刀削面最硬,做扯面一般是一斤面六两多水。和面的过程也比较重要,先把面打成面穗(水一点一点的加),再揉成面团,兑水扎软(一般反复扎几次),然后用湿布蒙住。醒面也是必需的,和好的面醒半小时后才好用。 </p>
    </div>
    </li>
    <li>
    <h1>多种方式调用</h1>
    <a href="javascript:void(0)">测试a链接3</a>
    <p>扯面是一种陕西和山西的传统面食小吃,已有3000年。</p>
    <input id="btn" type="button" value="test-$.UIDialog" />
    <div>热乎乎的扯面,浇上自己喜欢的调和(调料),或番茄酱、或肉炸酱、或炖菜,配上香喷喷的老陈醋,油汪汪的红辣子,挑一根放到嘴里一吸一嘬之下,扯面特有的筋道和绵软,你只有试过才知道哦。 </div>
    <input id="btn2" type="button" value="test-$.fn.UIDialog">

    </li>
    </ol>


    <br>


    </div>
    <script type="text/javascript">
    (function($){
    $.fn.UIDialog = function(options){
    var defaults = {
    IE :$.browser.msie,
    IE6 :$.browser.version == 6,
    FIREFOX :$.browser.mozilla,
    window :$(window),
    document :$(document),
    body :$(document.body),
    id :null, // 需要赋值的ID
    callOnOpen :null, // 弹出后调用
    callOnClose:null, // 关闭后调用
    eventType :null, // 事件类型 click, blur, change, dblclick, error, focus, load, mousedown, mouseout, mouseup
    idContent :null, // 需要添加的id
    width :'auto', // 宽
    height :'auto', // 高
    title :'消息', // 标题
    content :'测试内容' // 内容
    };
    var opts = $.extend({}, defaults, options);

    var instance = {
    // 初始化方法
    init: function(opts, me){
    var that = this,
    cache = $.UIDialog.cache;
    for(var p in opts){ // opts 绑定到 instance
    this[p] = opts[p];
    }
    that.me = me; // 被调用者
    that.createDialog();
    that.createMask();
    that.mask.fadeTo('slow', 0.5).click(function(){
    that.close();
    });
    cache.push(that.dialog);
    cache.push(that.mask);
    that.dialog.fadeIn('slow', function(){ that.callOnOpen && that.callOnOpen(); });
    that.setZIndex();
    },
    // 创建容器
    createDialog: function(){
    var that = this,
    dialog = $('<div class="ui-dialog"></div>').appendTo(this.body).hide(),
    dialogTitle = $('<h1 class="ui-dialog-title"></h1>').appendTo(dialog),
    dialogBody = $('<div class="ui-dialog-body"></div>').appendTo(dialog),
    titleClose = null;
    opts.id && dialog.attr('id', opts.id);
    that.dialog = dialog;
    that.title ? dialogTitle.append(that.title) : title.hide();
    titleClose = $('<a class="ui-close" href="###">关闭</a>').appendTo(dialogTitle).click(function(){ that.close(); });
    dialogBody.append(that.content);
    // dialogBody.append(that.me.next().html());
    that.IE6 && dialog.css({position:'absolute'});
    that.setSize();
    return that;
    },
    // 创建模板
    createMask: function(){
    var that = this,
    body = that.body,
    windowWidth = that.window.width(),
    mask = $('<div class="ui-mask"></div>').appendTo(body).hide();
    that.mask = mask;
    mask.css({ windowWidth, height: that.document.height()});
    that.IE6 && mask.html('<iframe src="about:blank" style="100%;height:100%;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0)"></iframe>'); // 添加全屏iframe以防止select穿透
    return that;
    },
    // 设置大小
    setSize: function(){
    var that = this,
    dialog = that.dialog,
    window = that.window,
    windowWidth = window.width(),
    windowHeight = window.height(),
    left, top;
    dialog.css({ that.width, height: that.height});
    var defaultTop = Math.floor((windowHeight - dialog.outerHeight()) / 2);
    left = (windowWidth - dialog.width()) / 2 + 'px';
    top = defaultTop + 'px';
    dialog.css({left: left, top: top});
    return that;
    },
    // 设置堆叠值
    setZIndex: function(){
    var that = this,
    dialog = that.dialog,
    mask = that.mask,
    indexVal = $.UIDialog.globalIndex++; // 引用全局变量,否则每次初始化后值为原始值
    dialog && dialog.css({zIndex: indexVal});
    mask && mask.css({zIndex: indexVal - 1});
    return that;
    },
    // 关闭
    close: function(){
    var that = this,
    cache = $.UIDialog.cache,
    dialog = cache[cache.length - 2],
    mask = cache[cache.length - 1];
    dialog.trigger('unload').unbind('click');
    mask.trigger('unload').unbind('click');
    that.slowRemove(dialog).slowRemove(mask);
    cache.splice(cache.length - 2, 2);
    return that;
    },
    // 渐隐
    slowRemove: function(ele){
    var that = this;
    ele.fadeOut('slow', function(){
    that.callOnClose && that.callOnClose();
    $(this).remove();
    });
    return that;
    }
    };
    var eventType = opts.eventType;
    if(eventType){ // 如果是 $.fn.UIDialog 方式调用
    return this.each(function(index){
    $(this).bind(eventType, function(){
    instance.init(opts, $(this));
    // return false;
    });
    });
    } else { // 如果是 $.UIDialog 方式调用
    instance.init(opts, $(this));
    }
    };
    $.UIDialog = function(s){
    $.fn.UIDialog(s);
    };
    $.UIDialog.globalIndex = new Date().getFullYear() + '' + new Date().getHours(); // 全局堆叠值,不能超过最大值(2147483647) From: http://softwareas.com/whats-the-maximum-z-index
    $.UIDialog.cache = []; // 缓存对象

    })(jQuery);

    $('a').click(function(){
    $.UIDialog({
    content: $(this).next().html(),
    id: 'testtab',
    500
    });
    $('#testtab #mybtn').click(function(){
    console.log($('#testtab').find('#useranme').val());
    });
    });
    $('#mybtn').live('click', function(){
    $.UIDialog({
    content: '我是一个兵'
    })
    });

    $('#btn').click(function(){
    $.UIDialog({
    content: $(this).next().html()
    });
    })
    $('#btn2').UIDialog({
    eventType: 'click',
    content: '我是一个弹出层!'
    })
    </script>

    </body>
    </html>

    作品索引

     

    一、jquery插件

    1. jQuery插件-轻量图片轮换-UISlide
    2. jQuery插件-轻量弹出层-UIDialog
    3. jQuery插件-轻量滚动条-UIScroll

    二、js源生

    1. 待续
  • 相关阅读:
    [leetcode] 17. 电话号码的字母组合
    C++17 Fold Expressions
    多线程----NSOperation
    CGD---1--开辟并发新线程
    彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题(转)
    ios 内存使用陷阱 和imageNamed 、imageWithContentsOfFile:(转)
    (转)unbalanced calls to begin/end appearance transitions for uiviewcontroller的解决方法
    ios开发种证书
    使用CAShapeLayer与UIBezierPath画出想要的图形
    定位子字符串的位置
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2410682.html
Copyright © 2011-2022 走看看