使用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 相关文章推荐
繁简字转换功能
Jul 19 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
May 16 Javascript
2014 年最热门的21款JavaScript框架推荐
Dec 25 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
node中使用es5/6以及支持性与性能对比
Aug 11 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
Aug 05 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 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实现手机归属地查询API接口实现代码
2012/08/27 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
window.parent与window.openner区别介绍
2012/04/12 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python检测生僻字的实现方法
2016/10/23 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
用python发送微信消息
2020/12/21 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
大学生个人求职口试自我评价
2014/02/16 职场文书
地理科学专业自荐信
2014/09/01 职场文书
党校学习心得体会范文
2014/09/09 职场文书
自查自纠工作总结
2014/10/15 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android