使用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 相关文章推荐
仅用[]()+!等符号就足以实现几乎任意Javascript代码
Mar 01 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
jQuery可见性过滤选择器用法示例
Sep 09 Javascript
jQuery基本过滤选择器用法示例
Sep 09 Javascript
实例浅析js的this
Dec 11 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
详解package.json版本号规则
Aug 01 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
Sep 10 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
Dec 18 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
Jul 17 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
python生成式的send()方法(详解)
2017/05/08 Python
详解python:time模块用法
2019/03/25 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
Python API自动化框架总结
2019/11/12 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
python如何变换环境
2020/07/21 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
农村婚礼证婚词
2014/01/08 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
主题教育活动总结
2014/05/05 职场文书
法院授权委托书范文
2014/08/02 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书