使用jquery制作弹出框效果


Posted in Javascript onApril 03, 2015

非常不错的国产JS弹出框插件,由前端工程师alien开发,提供多种类型的自定义对话框,使用方法简单,浏览器兼容性好,支持的弹出框模式有:

alert:普通提示(警告)对话框
confirm:询问(确认)对话框
message:简单消息对话框(无title、无按钮)
iframe:在对话框中嵌入一个iframe
tip:带有小三角指向的小tip
dialog:最基础的自定义对话框

var jDialogId = [];
(function ($) {
  $.jDialog = function (options) {
 
    var id = parseInt(Math.floor(Math.random() * 1000 + 1));
    while ($.inArray(id, jDialogId) != -1) {
      id = parseInt(Math.floor(Math.random() * 1000 + 1));
    }
    jDialogId.push(id);
 
    var defaults = {
      title:"",
      content: "这是一个JasUI-Dialog插件",
      width: 350,
      height: 0,
      timer: 0,
      showbuttons:false,
      buttons: [],
      okval: "确认",
      ok: function () { return false;},
      cancelval: "取消",
      cancel: function () { return false; },
      showclose:true,
      close: function () { },
      theme:""
    };
    var options = $.extend(defaults, options);
    var _objdiv = "<div id='j-dialog-" + id + "' class='j-dialog ";
    if (options.theme != "") {
      _objdiv = _objdiv + "j-dialog-" + options.theme + "'>";
    } else {
      _objdiv = _objdiv + "'>";
    }
    _objdiv = _objdiv + "<div class='j-dialog-header'>";
    if (options.showclose) {
      _objdiv = _objdiv + "<a href='javascript:void(0)' class='j-close j-dialog-close'></a>"
    } 
    if (options.title != "") {
      _objdiv = _objdiv + "<h5 class='j-dialog-title'>" + options.title + "</h5>";
    }
    _objdiv = _objdiv + "</div>";
    _objdiv = _objdiv + "<p class='j-dialog-content'>" + options.content + "</p>";
     
    if (options.showbuttons) {
      _objdiv = _objdiv + "<div class='j-dialog-footer'>";
      $.each(options.buttons,function(i,value) { 
        _objdiv = _objdiv + "<a class='j-button' data-id='" + i + "'>" + value.title + "</a>";
      })
      _objdiv = _objdiv + "<a class='j-button j-button-primary j-dialog-ok'>" + options.okval + "</a>";
      _objdiv = _objdiv + "<a class='j-button j-dialog-cancel'>" + options.cancelval + "</a>";
      _objdiv = _objdiv + "</div>";
    };
     
    _objdiv=_objdiv+"</div>";
    $("body").append(_objdiv);
    var _obj = $('#j-dialog-' + id)
    if (options.height>0) {
      _obj.css("height", options.height);
    }
    _obj.css("width", options.width);
    _obj.css("margin-top", '-' + (options.height / 2) + 'px');
    _obj.css("margin-left", '-' + (options.width / 2) + 'px');
    _obj.animate({ top: '30%',opacity:1 }, 0);
    if (options.showclose) {
      _obj.find('.j-dialog-close').on('click', function () {
        $.jDialogRemove(id, options.close);
      })
      _obj.find('.j-dialog-ok').on('click', function () {
        if (!options.ok()) {
          $.jDialogRemove(id, options.close);
        }
      })
      _obj.find('.j-dialog-cancel').on('click', function () {
        if (!options.cancel()) {
          $.jDialogRemove(id, options.close);
        }
      })
    }
    if (options.showbuttons) {
      $.each(options.buttons, function (i, value) {
        _obj.find("[data-id=" + i + "]").on('click', function () {
          if (!value.callback()) {
            $.jDialogRemove(id, options.close);
          }
        })
      })
    };
    if (options.timer> 0) {
      setTimeout(function () {
        $.jDialogRemove(id,options.close);
      }, options.timer);
    }
    return id;
  },
  $.jDialogRemove = function (id, callback) {
    if ($.inArray(id, jDialogId)!=-1) {
      jDialogId.splice($.inArray(id, jDialogId), 1);
      $('#j-dialog-' + id).animate({ top: '0', opacity: 0 }, 500, function () {
        $('#j-dialog-' + id).remove();
        if (callback) {
          callback();
        }
      });
    }
  },
  $.jTip = function (options) {
    var defaults = {
      content: "这是一个JasUI-Dialog插件",
      width: 200,
      timer: 0,
      showclose: false,
      close: function () { },
      theme: ""
    };
    var options = $.extend(defaults, options);
    $.jDialog(options);
  },
  $.jFloatText = function (txt,color,posX,posY) {
    var $i = $("<b>").text(txt);
    var x = '50%', y = '40%';
    var _color = '#E94F06';
    if (color) {
      _color= color;
    }
    if (posX) {
      x = posX;
    }
    if (posY) {
      y = posY;
    }
    $i.css({ top: 200, left: x, position: "absolute", color: "#E94F06" });
    $("body").append($i);
    $i.animate({ top: 20, opacity: 0}, 1500, function () {
      $i.remove();
    });
  }
 
})(jQuery);

以上所述就是本文的全部内容了,希望能够对大家熟练使用jQuery有所帮助。

Javascript 相关文章推荐
xtree.js 代码
Mar 13 Javascript
比较详细的javascript对象的property和prototype是什么一种关系
Aug 06 Javascript
javascript 语法基础 想学习js的朋友可以看看
Dec 16 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
判断字符串的长度(优化版)中文占两个字符
Oct 30 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
Jun 13 Javascript
JS插件plupload.js实现多图上传并显示进度条
Nov 29 Javascript
bootstrap选项卡扩展功能详解
Jun 14 Javascript
js实现移动端导航点击自动滑动效果
Jul 18 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 Javascript
javascript 实现map集合
Apr 03 #Javascript
jQuery制作简洁的图片轮播效果
Apr 03 #Javascript
jQuery制作效果超棒的手风琴折叠菜单
Apr 03 #Javascript
jQuery实现左右切换焦点图
Apr 03 #Javascript
基于jquery ui的alert,confirm方案(支持换肤)
Apr 03 #Javascript
javascript制作sql转换为stringBuffer的小工具
Apr 03 #Javascript
JavaScript替换当前页面的方法
Apr 03 #Javascript
You might like
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
又一个php 分页类实现代码
2009/12/03 PHP
php 字符串替换的方法
2012/01/10 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
js函数般调用正则
2008/04/08 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
python strip()函数 介绍
2013/05/24 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
Python生成词云的实现代码
2020/01/14 Python
Python爬虫与反爬虫大战
2020/07/30 Python
开放系统互连参考模型
2016/06/29 面试题
在职研究生自我鉴定
2013/10/16 职场文书
总经理助理的八要求
2013/11/12 职场文书
致400米运动员广播稿
2014/02/07 职场文书
国庆节演讲稿
2014/05/27 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
中小企业员工手册范本
2015/05/14 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
mysql 带多个条件的查询方式
2021/06/05 MySQL
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL