使用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 相关文章推荐
jQuery学习2 选择器的使用说明
Feb 07 Javascript
JavaScript 学习技巧
Feb 17 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
Apr 01 Javascript
详解JS函数重载
Dec 04 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
浅谈Javascript数组索引
Jul 29 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
Oct 15 Javascript
最实用的jQuery分页插件
Oct 09 Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 Javascript
详解如何从零开始搭建Express+Vue开发环境
Jul 17 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP数据缓存技术
2007/02/14 PHP
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
vuex入门最详细整理
2020/03/04 Javascript
python中Genarator函数用法分析
2015/04/08 Python
Python实现二维数组输出为图片
2018/04/03 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
Python decimal模块使用方法详解
2020/06/08 Python
python 实现有道翻译功能
2021/02/26 Python
戴尔美国官网:Dell
2016/08/31 全球购物
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
弘扬职业精神演讲稿
2014/03/20 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
法人代表证明书格式
2014/10/01 职场文书
勇敢的心观后感
2015/06/09 职场文书
小爸爸观后感
2015/06/15 职场文书
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript