前端相关 1.子级页面调用父级页面的方法 2.Layui 流加载 3.像素px和相对单位换算 4.强制闭合html标签

本文介绍了layui框架下的几个实用技巧,包括子级页面调用父级页面的方法以优化服务连接数、实现流加载效果来动态更新页面内容、像素单位的适配转换及确保HTML标签正确闭合。

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;

  }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值