YII 对话框
感觉后台的弹出窗口一直是系统功能实现的弱项,由于系统大部分采用了layer,但是layer实现ajax加载网页内容的显示效果与系统兼容性不是很好,导致每个升级到弹出窗口的展现都需要前端人员参与设计,十分耗时,所以对前端的代码进行了简单的封装,使用方式如下:
1.依赖jquery.method.js,后台作为公共函数已经引入,无需自己调用。
2.使用方式:
(一)最常用,也是非常建议的ajax加载网页内容:
$("body").on("click", ".offsale-goods", function() { var id = $(this).data("id"); $.modal({ // 标题 title: '违规商品', // ajax加载的设置 ajax: { url: '/goods/publish/illegal', data: { id: id } }, }); });
(一)直接引用页面元素:
$.modal({ title: '违规商品', content: '123123', });
API:
1. $.modal(options)可以打开弹出窗口。
2. options默认值为:
var defaults = { id: uuid(), title: false, content: '', footer: false, width: false, height: false, // 用于存放一些交互用的数据 params: {}, ajax: false, // 触发器,会在触发器的data中存放modal trigger: false, // 在调用 show 方法后触发。 onshow: null, // 当调用 hide 实例方法时触发。 onhide: null, };
3.获取元素绑定的Modal:$.modal(jquery对象),用于获取触发器、Modal中的元素所绑定的Modal对象。
4.常用函数:
打开模式对话框,会触发onshow的回调函数 modal.show() 隐藏模式对话框,会触发onhide的回调函数 modal.hide() 切换显示隐藏的状态 modal.toggle() 销毁模式对话框 modal.close() 设置宽度 modal.width(宽度) 设置高度 modal.height(高度) // 设置标题 modal.title(标题) 添加按钮 modal.addButton({ id: 按钮ID, text: 按钮显示的文本, btn_class: 'btn btn_primary' // 按钮的样式 click: null, // 按钮的点击事件,默认实现了点击隐藏的事件 }); // 根据按钮ID移除按钮 modal.removeButton(id);
5.常见问题:
1.点击某个按钮或者超链接触发打开了一个Modal,那么想下次点击再次打开同一个Modal的话可以如下操作: $("#按钮").click(function(){ var modal = $.modal($(this)); if(modal){ modal.show(); }else{ modal = $.modal({ //创建一个新的对话框 }); } });
2.如何在打开的对话框中获取Modal对象? 为了了能够灵活操作对话框中的页面元素,建议在Modal的内容页面顶部加入 {$uuid = uuid()} 这样来创建一个唯一标识,并且赋值给对话框内容页的外层容器,容器的ID可以设置为$uuid 例如:<div id="{$uuid}"> 这样在页面中操作时可以通过 $("#{$uuid}").find("你要查找的元素"),这种方式可以确保不会和其他页面内相同的元素发生冲突。 获取当前页面所属的Modal对象如下: var modal = $.modal($("#{uuid}")); 然后就可以随意使用了
3.对话框如何和打开对话框的页面进行参数的交互? 很多时候需要将页面的一些参数传递给Modal对象,可以通过Modal对象的params属性作为一个间接的容器,但是大多时候Modal对象和打开的页面就在同一个页面,只要变量的范围允许,都可以引用的。
相关推荐
WasteLand 2020-10-18
Allinputs 2020-08-30
Ashes 2020-06-14
caiyiii 2020-06-14
kxguan 2020-06-14
daillo 2020-06-14
一粒沙里的世界 2020-06-14
ruxingli 2020-06-14
csssy00 2020-06-14
阿佐 2020-06-14
NameWFY 2020-05-28
NameWFY 2020-05-26
Robin罗兵 2020-05-16
caiyiii 2020-04-29
wmsjlihuan 2020-04-26
cbao 2020-04-26
csssy00 2020-04-19
igogo00 2020-03-09