1.layui 打开的子级页面调用父级页面的方法
描述:比如调用一个服务,这个服务有连接数的限制,如果父级页面调用,子级页面也调用的话,连接数就会变多,数量足够大的是时候就会有限制,需要优化服务或者增加连接数限制,如果子级页面能调用父级页面的方法,那么连接数就会大量的减少,就增加了服务的可用性
首先定义父级方法:
// 定义函数
var _tools = {
// 函数结构体(params:函数入参)
func1: function(params){
//函数方法
}
}
//初始化函数
window.tools = _tools;
// 子级方法调用父级方法:
parent.tools.func1(params);
//得到父级页面iframe层的索引
var index = parent.layer.getFrameIndex(window.name);
//再执行关闭
parent.layer.close(index);
2.Layui 流加载
HTML部分
//流加载主容器
<div class="content">
//流加载数据容器
<ul class="content patienteducation" id="demo">
</ul>
//暂无提示容器
<div class="page-hd">
<div class="weui-loadmore">
//暂无容器提示图片
<img src="图片地址">
//暂无容器提示语
<span class="weui-loadmore__tips">暂无数据</span>
</div>
</div>
</div>
// layui框架初始化
layui.use(['form', 'flow'], function() {
//不用额外加载jQuery,flow模块本身是有依赖jQuery的,直接用即可。
var $ = layui.jquery;
var flow = layui.flow;
var form = layui.form;
//定义函数体
function searchBenSre() {
//流加载主方法
flow.load({
elem: '指定容器Class或者ID',
scrollElem:"流加载数据容器Class或者ID",
//到达临界点(默认滚动触发),触发下一页
done: function(page, next) {
// 初始化数组
var lis = [];
//以jQuery的Ajax请求为例,请求下一页数据(注意:page是从2开始返回)
var url = '请求地址';
var param = {
参数key:参数value
}
//ajaxt请求
$.post(url, param, function(res) {
//判断是否是空数据(该判断决定是否展示数据)
if (res.data.length < 1) {
$('#demo').hide();
$('.page-hd').show();
return false;
} else {
$('#demo').show();
$('.page-hd').hide();
}
//数组组装
var html = '';
//循环数组
layui.each(res.data, function(index, item) {
//数据循环组装
html += “”;
});
//数据加入数组
lis.push(html);
//重新渲染
form.render();
//判断是否还能加载下一页
next(lis.join(''), page < res.pages);
}, 'json');
}
});
}
//初始化调用(注意:一定要初始化,这一步加载的是第一也的数据)
searchBenSre();
})
后端返回参数(code标识码;msg提示消息;data返回数组,pages总页数):
返回成功信息:
ajaxReturn( array("code"=>0, "msg"=>"成功", "data"=>$data, "count"=>$num,'pages'=>$pages)
返回失败信息:
ajaxReturn( array("code"=>1, "msg"=>"失败", "data"=>’’, "count"=>0,'pages'=>1)
3.像素px和相对单位换算
(function(doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange': 'resize',
recalc = function() {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
if (clientWidth >= 720) {
docEl.style.fontSize = '20px';
} else {
docEl.style.fontSize = 40 * (clientWidth / 720) + 'px';
}
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
4.强制闭合html标签
function closetags($html) {
preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
$openedtags = $result[1];
preg_match_all('#</([a-z]+)>#iU', $html, $result);
$closedtags = $result[1];
$len_opened = count($openedtags);
if (count($closedtags) == $len_opened) {
return $html;
}
$openedtags = array_reverse($openedtags);
for ($i=0; $i < $len_opened; $i++) {
if (!in_array($openedtags[$i], $closedtags)){
$html .= '</'.$openedtags[$i].'>';
} else {
unset($closedtags[array_search($openedtags[$i], $closedtags)]);
}
}
return $html;
}
本文介绍了layui框架下的几个实用技巧,包括子级页面调用父级页面的方法以优化服务连接数、实现流加载效果来动态更新页面内容、像素单位的适配转换及确保HTML标签正确闭合。

被折叠的 条评论
为什么被折叠?



