首页

前端js中动态添加的元素不能触发绑定事件解决方法

seo达人

如果您想订阅本博客内容,每天自动发到您的邮箱中, 请点这里

问题描述:在页面选择关键词时,需要将关键词元素绑定点击事件使同一类型的关键词只有一个固定class,使其随点击更换,目的是为了让这一类型的关键词的值可以由class获取。在原本写死的关键词上绑定的事件是可用的,但是换成动态加载后发现只能适用于写死的情况。很无奈,在网上搜索一番后花了点时间终于解决了,下面奉上。  

参考文章:https://blog.csdn.net/qq_35129893/article/details/78363211?locationNum=2&fps=1

原本绑定事件如下:

[javascript] view plain copy
  1. //查询条件class的加载和移除(不能绑定动态加载的标签)  
  2. $('.value_list').children.click(function(){     
  3.     $(this).addClass('a-time').siblings().removeClass('a-time');  

针对的HTML元素如下:

[html] view plain copy
  1. <div class="value_list value_list1" style="width: 80%;" id="subject">  
  2.     <span class="mr36" onclick="selectTopic(0)" value="0">全部</span>  
  3.     <a href="javascript:;" onclick="selectTopic("6eac9783353d40bba49e6b253e73f285")" value="dayu" types="subject" class="a-time">dayu</a>  
  4.     <a href="javascript:;" onclick="selectTopic("f9cbaa888cf34a99b6c50bf393e1a859")" value="天下会" types="subject" class="">天下会</a>  
  5.     <a href="javascript:;" onclick="selectTopic("3f4aa8924c88466dafc63d52aa57e7a6")" value="大雨" types="subject">大雨</a>  
  6.     <a href="javascript:;" onclick="selectTopic("87259765e9174a3b9d97f00a461e90bd")" value="士大夫" types="subject" class="">士大夫</a>  
  7. </div>  

但是发现,原先的事件不能用于动态加载的元素,如上面加载的,加载形式如下:

[javascript] view plain copy
  1. //获取关键词列表  
  2. function getlist(){  
  3.     $("#subject").html("");  
  4.     $.ajax({  
  5.         type: "POST",  
  6.         url:path+"/key/queryKeys.php",  
  7.         dataType : "json",  
  8.         success: function(result) {  
  9.             var data = result.data;  
  10.             console.log(data+" 888");  
  11.             if(data!=''){  
  12.                 var html='<span class="a-time mr36" onclick="selectTopic(0)" value="0">全部</span>';  
  13.                 for(var i=0;i<data.length;i++){//如果不加"则只能传递数字变量而不能传递带有字母的变量,加上"则无影响  
  14.                 //  html+='<li class="fl"><i class="iconfont close" onclick="del("'+data[i].kw_id+'")"></i>'+data[i].kw_word+'</li>';  
  15.                     html+='<a href="javascript:;" onclick="selectTopic("'+data[i].kw_id+'")" value="'+data[i].kw_word+'" types="subject">'+data[i].kw_word+'</a>'  
  16.                 }                             
  17.                 $("#subject").html(html);  
  18.             }else{  
  19.                 alert("请先登陆!");   
  20.             }  
  21.         }  
  22.          });   
  23. }  

无奈,只能上网寻求万能的大神了。

基本上提供的解决方案就两个,使用

$('element').live('click',function(){})

或者

$('父元素').on('click', '子元素', function(){})

我先是使用.live尝试了下,发现gg,心灰意冷ing;本着试一试不要钱的心态又用.on试了下,结果令人惊喜啊!可以使用了,哎,这鬼玩意坑死人。

下面上针对我加载的界面元素写的绑定事件:

[javascript] view plain copy
  1. //查询条件class的加载和移除(适用于动态加载标签的情况--on事件需要jquery在1.6以上)  
  2. $('.value_list').on('click','a,span',function(){  
  3.     $(this).addClass('a-time').siblings().removeClass('a-time');  
  4. ;  

蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务

懒加载封装实现

周周

1.什么是懒加载?
         当访问一个页面的时候,先把img元素背景图片路径替换成一张替代图片的路径(这样就只需请求一次,占位图),将图片的真实路径存储在img自定义属性中,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。
2.为什么要用懒加载?
       很多页面,内容很丰富,页面很长,图片较多。比如说各种商城页面。这些页面图片数量多,而且比较大,少说百来K,多则上兆。要是页面载入就一次性加载完毕,提高首屏加载速度,可以减轻服务器压力,节约流量,用户体验好。
3.懒加载实现封装?

    lazyLoad由四个函数组成,init(初始化函数),checkShow(判断图片是否加载),shouldShow(将要展示的图片),showImg(展示图片)。

(1)初始化函数(init)  由于滚动事件太消耗性能,所以用定时器替换,不是滚动就触发,而是滚动后200毫秒后触发。

                var timer;
                function init(){
                    $(window).on("scroll",function(){
                        if(timer){
                            clearTimeout(timer);
                        }
                        timer = setTimeout(function(){
                            checkShow();  //
                        },200);
                    });
                }

(2)判断”图片是否加载“(checkshow)函数,如果图片有isload属性,就说明图片已经加载过了,直接return。如果图片没有isload属性,进入将要展示图片shouldshow函数

                function checkShow(){
                    $lazyLoad.each(function(){
                        $cur = $(this);
                        if($cur.attr('isLoaded')){
                            return;
                        }
                        if(shouldShow($cur)){
                            showImg($cur);
                        }
                    });
                }

(3)将要展示图片shouldshow函数,获取屏幕可视宽度,滚动高度,要展示的元素到文档的高度,如果元素到文档的高度小于屏幕的可视高度加上滚动高度,说明元素已在可视区内,返回true,否则返回false。

               function shouldShow ($node){
                    var scrollH = $(window).scrollTop(),
                        windowH = $(window).height(),
                        top = $node.offset().top;
                    if(top < windowH + scrollH){
                        return true;
                    } else {
                        return false;
                    }

                }

(4)“展示图片”函数,将元素的src属性替换为自定义属性data-src(真正图片的地址)。

                function showImg ($node){
                    $node.find("img").attr("src",$node.data("src"));
                    $node.attr("isLoaded",true);
                }

(5)函数返回一个对象

              return {
                        init : init
           }

      这样就实现懒加载封装了!

微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)

seo达人

如果您想订阅本博客内容,每天自动发到您的邮箱中, 请点这里

1.把wxParse文件全部放入项目。

2.在wxml中import wxParse.wxml,并把template插入到到对应的位置上

[html] view plain copy
  1. <!--wxml-->  
  2. <import src="../../../wxParse/wxParse.wxml"/>  
  3. <view class="view-title">{{title}}</view>  
  4. <view class="view-time-box">  
  5.   <text class="view-date">{{date}}</text>  
  6.   <text class="view-time">{{time}}</text>  
  7. </view>  
  8. <template is="wxParse" data="{{wxParseData:article.nodes}}"/>  

3.在wxss中import wxParse.wxss,并设置样式;比如‘wxParse-image’是富文本图片转化成image组件之后的类名,‘wxParse-p’是p标签转化成view组件后设置的类名

[css] view plain copy
  1. <!--wxss-->  
  2. @import "../../../wxParse/wxParse.wxss";  
  3. page{  
  4.   background#fff;  
  5. }  
  6. .view-title{  
  7.   line-height80rpx;  
  8.   font-size48rpx;  
  9.   color:#0C0C0C;  
  10.   overflowhidden;  
  11.   text-overflow: ellipsis;  
  12.   display: -webkit-box;  
  13.   -webkit-line-clamp: 2;  
  14.   -webkit-box-orient: vertical;  
  15.   max-height190rpx;  
  16.   min-height80rpx;  
  17.   width:690rpx;  
  18.   padding:30rpx 30rpx 0;  
  19. }  
  20. .view-time-box{  
  21.   height66rpx;  
  22.   line-height66rpx;  
  23.   font-size30rpx;  
  24.   color:#999999;  
  25.   margin-bottom40rpx;  
  26.   padding:0 30rpx;  
  27. }  
  28. .view-date{  
  29.   margin-right20rpx;  
  30. }  
  31. .wxParse-img{  
  32.   margin-top:20rpx;  
  33.   displayblock;  
  34.   position:relative;  
  35.   top:0;  
  36.   left:50%;  
  37.   transform: translateX(-50%);  
  38. }  
  39. .wxParse-p{  
  40.   text-indent2em;  
  41.   margin-top:20rpx;  
  42.   color:#0C0C0C;  
  43.   line-height:50rpx;  
  44.   font-size:34rpx;  
  45.   padding:0 30rpx 30rpx;  
  46.   text-alignjustify;  
  47. }  

4.js

[javascript] view plain copy
  1. var WxParse = require('../../../wxParse/wxParse.js');  
  2. Page({  
  3.   
  4.   /** 
  5.    * 页面的初始数据 
  6.    */  
  7.   data: {  
  8.     title: '',  
  9.     date: "",  
  10.     time: "",  
  11.     id: ''  
  12.   },  
  13.   
  14.   /** 
  15.    * 生命周期函数--监听页面加载 
  16.    */  
  17.   onLoad: function (options) {  
  18.     this.setData({  
  19.       id:options.id  
  20.     })  
  21.   },  
  22.   onShow: function () {  
  23.     wx.showLoading({  
  24.       title: '加载中...',  
  25.     })  
  26.     var that = this;  
  27.   
  28.     // 模拟获取数据  
  29.     setTimeout(function () {  
  30.       that.setData({  
  31.         title:'侨宝柑普茶新会陈皮侨宝柑',  
  32.         date:"2018-03-01",  
  33.         time:"13:20:53"  
  34.       })  
  35.       var article = `  
  36.         <img src="../../../imgs/index/s.png"></img>  
  37.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  38.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  39.         <img src="../../../imgs/index/s.png"></img>  
  40.     <p>近两年,小青柑的火爆有目共睹,娇小玲珑的产品形态、便携式的消费场景、柑与茶结合的时尚方式以及独特的口感和养生功效,都在顺应着目前年轻化、多元化、便携化的茶叶消费市场需求,让它成为了一大爆品。</p>  
  41.       `;  
  42.       /** 
  43.       * WxParse.wxParse(bindName , type, data, target,imagePadding) 
  44.       * 1.bindName绑定的数据名(必填) 
  45.       * 2.type可以为html或者md(必填) 
  46.       * 3.data为传入的具体数据(必填) 
  47.       * 4.target为Page对象,一般为this(必填) 
  48.       * 5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选) 
  49.       */  
  50.       WxParse.wxParse('article''html', article, that, 20);  
  51.         
  52.       // 更改数据、获取新数据完成  
  53.       wx.hideLoading();  
  54.     }, 500)  
  55.   }  
  56. })  
具体的API可以去GitHub上查看:https://github.com/icindy/wxParse








蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务


js中常见的位置属性-offset,scroll,client系列

周周

前言
       Javascript中的offset、scroll、client系列都是比较常用的坐标属性,也是比较容易混淆的知识点。
offset家族
       offset家族一般在节点对象里面使用。
       offsetParent
             1.    如果当前元素的父级元素没有进行css定位(position为absolute或relative),offsetParent为body。
             2.    如果当前元素的父级元素中有css定位(position为absolute或relative),offsetParent取最近的那个父级元素。
       offsetLeft/Top计算规则:
             标准流、浮动、非脱标定位
              offsetLeft = 自己的margin+offsetParent的margin、padding、border
              脱标定位
              offsetLeft = 自己的left + margin-left
        注意:与stlye.left的区别
              offsetLeft只可读,不可写。也就是说,通过offsetLeft只能获取元素的左偏移值,而无法去设置元素的左偏移值。
               stlye.left可读可写,但是通过style.left获取元素的偏移值,是一个带单位的字符串,例如“100px”。

            (offsetTop同理)

        offsetWidth(和offsetHeight:

        其实就是一个元素的实际宽度 = width+padding+border

client家族】

        clientWidth (clientHeight) = width+padding

              该属性指的是元素的可视部分宽度和高度

              假如元素有padding有滚动,且滚动是显示的

              clientWidth = width + padding - 滚动轴宽度

       clientTop(clientLeft):

             这一对属性是用来读取元素的border的宽度和高度的

             clientTop = border-top 的 border-width

             clientLeft = border-left 的 border-width

【scroll家族】

150537.jpg.png

  如上图所示
       scrollWidth(和scrollHeight
          无滚动轴时:scrollWidth = clientWhidth = width + padding
          有滚动轴时:scrollWidth = 实际内容的宽度 + padding
       scrollTop(和scrollLeft
           这对元素是可读写的,指的是当元素其中的内容超出其宽高的时候,元素被卷起的宽度和高度
【事件里面的clientXoffsetXscreenX


  • event.clientX:设置或获取鼠标指针位置相对于当前窗口的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条
  • event.clientY:设置或获取鼠标指针位置相对于当前窗口的 y 坐标,其中客户区域不包括窗口自身的控件和滚动条
  • vent.offsetX:设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标
  • event.offsetY:设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标
  • event.screenX 设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标。
  • event.screenY设置或获取鼠标指针位置相对于用户屏幕的 y 坐标。


【window系列】
  • window.innerHeight指的是浏览器窗口显示html文档的可视区域的高度
  • window.outerHeight指的是浏览器窗口的高度 ,包括了工具栏,地址栏等等高度

       window.screen包含了屏幕的信息
  • window.screen.width   电脑屏幕的整个宽度
  • window.screen.availWidth   电脑屏幕除去菜单条之后的宽度
  • window.screen.left   浏览器窗口的左上角距离电脑屏幕最左侧的距离




HTML5网页扫描二维码

seo达人

如果您想订阅本博客内容,每天自动发到您的邮箱中, 请点这里

[HTML]代码

<!DOCTYPE html>
<html>
<head>
    <title>二维码扫描测试</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<style type="text/css">
    html, body {
        height: 100%;
        width: 100%;
        text-align: center;
    }
</style>
<script src="../js/jquery-1.11.1.min.js"></script>
<script>
    //这段代 主要是获取摄像头的视频流并显示在Video 签中
    var canvas = null, context = null, video = null;
    window.addEventListener("DOMContentLoaded", function () {
        try {
            canvas = document.getElementById("canvas");
            context = canvas.getContext("2d");
            video = document.getElementById("video");
            var videoObj = { "video": true, audio: false },
                flag = true,
                MediaErr = function (error) {
                    flag = false;
                    if (error.PERMISSION_DENIED) {
                        alert('用户拒绝了浏览器请求媒体的权限', '提示');
                    } else if (error.NOT_SUPPORTED_ERROR) {
                        alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
                    } else if (error.MANDATORY_UNSATISFIED_ERROR) {
                        alert('指定的媒体类型未接收到媒体流', '提示');
                    } else {
                        alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试', '提示');
                    }
                };
            //获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
            if (navigator.getUserMedia) {
                //qq浏览器不支持
                if (navigator.userAgent.indexOf('MQQBrowser') > -1) {
                    alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
                    return false;
                }
                navigator.getUserMedia(videoObj, function (stream) {
                    video.src = stream;
                    video.play();
                }, MediaErr);
            }
            else if (navigator.webkitGetUserMedia) {
                navigator.webkitGetUserMedia(videoObj, function (stream) {
                    video.src = window.webkitURL.createObjectURL(stream);
                    video.play();
                }, MediaErr);
            }
            else if (navigator.mozGetUserMedia) {
                navigator.mozGetUserMedia(videoObj, function (stream) {
                    video.src = window.URL.createObjectURL(stream);
                    video.play();
                }, MediaErr);
            }
            else if (navigator.msGetUserMedia) {
                navigator.msGetUserMedia(videoObj, function (stream) {
                    $(document).scrollTop($(window).height());
                    video.src = window.URL.createObjectURL(stream);
                    video.play();
                }, MediaErr);
            } else {
                alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
                return false;
            }
            if (flag) {
                //alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。 请确保浏览器有权限使用摄像功能');
            }
            //这个是拍照按钮的事件,
            $("#snap").click(function () { startPat(); }).show();
        } catch (e) {
            printHtml("浏览器不支持HTML5 CANVAS");
        }
    }, false);
    //打印内容到页面
    function printHtml(content) {
        $(window.document.body).append(content + "<br/>");
    }
    //开始拍照
    function startPat() {
        setTimeout(function () {//防止调用过快
            if (context) {
                context.drawImage(video, 0, 0, 320, 320);
                CatchCode();
            }
        }, 200);
    }
    //抓屏获取图像流,并上传到服务器
    function CatchCode() {
        if (canvas != null) {
            //以下开始编 数据
            var imgData = canvas.toDataURL("image/jpeg");
            //将图像转换为base64数据
            var base64Data = imgData; //在前端截取22位之后的字符串作为图像数据
            $.ajax({
                type: 'post',
                url: '../ashx/HandlerScan.ashx?method=ParseImage',
                data: 'ImgData=' + base64Data,
                dataType: "json",
                cache: false,
                timeout: 10000,
                success: function (mes) {
                    if (mes.code == '1') {
                        alert('未识别二维码,请重新扫描!');
                    }
                    else {
                        alert(mes.name);
                    }
                },
                error: function (err) {
                    alert('扫描失败' + err);
                }
            });
        }
    }
</script>
<body>
    <div id="support"></div>
    <div id="contentHolder">
        <video id="video" width="320" height="320" autoplay></video>
        <canvas id="canvas" style="display:none; background-color:#F00;" width="320" height="320"></canvas><br/>
        <button id="snap" style="display:none; height:50px; width:120px;">开始扫描</button>
    </div>
</body>
</html>  

[C#后台]

    public class HandlerScan : IHttpHandler
    {
        private JsonResult js = new JsonResult();
        public void ProcessRequest(HttpContext context)
        {
            string result = string.Empty;
            string method = context.Request.QueryString.ToString();//获取想要做的操作
            switch (method)
            {
                case "method=ParseImage":
                    result = ParseImage(context);
                    break;
                default:
                    break;
            }
            context.Response.ContentType = "text/json";
            context.Response.Write(result);
        }
        private string ParseImage(HttpContext context)
        {
            try
            {
                string imgStr = context.Request.Params["ImgData"].ToString();
                imgStr = imgStr.Replace("data:image/jpeg;base64,", "");
                //整理字符串
                imgStr = imgStr.Replace(" ", "+");
                byte[] arr = Convert.FromBase64String(imgStr);
                MemoryStream ms = new MemoryStream(arr, 0, arr.Length);
                Bitmap bmp = new Bitmap(ms);
                //解析图片
                Result result = new BarcodeReader().Decode(bmp);
                if(result == null)
                {
                    return "{\"code\":1,\"name\":\"\"}";
                }
                else
                {
                    string[] a = result.Text.Split(','); 
                    string str = "{\"code\":0,\"name\":\"" + a[0] + "\"}";
                    return str; 
                }
            }
            catch (Exception ex)
            {
                return "{\"code\":1,\"msg\":\"" + ex.Message + "\",\"userName\":\"\"}";
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务

微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)

seo达人

如果您想订阅本博客内容,每天自动发到您的邮箱中, 请点这里

1.把wxParse文件全部放入项目。

2.在wxml中import wxParse.wxml,并把template插入到到对应的位置上

[html] view plain copy
  1. <!--wxml-->  
  2. <import src="../../../wxParse/wxParse.wxml"/>  
  3. <view class="view-title">{{title}}</view>  
  4. <view class="view-time-box">  
  5.   <text class="view-date">{{date}}</text>  
  6.   <text class="view-time">{{time}}</text>  
  7. </view>  
  8. <template is="wxParse" data="{{wxParseData:article.nodes}}"/>  

3.在wxss中import wxParse.wxss,并设置样式;比如‘wxParse-image’是富文本图片转化成image组件之后的类名,‘wxParse-p’是p标签转化成view组件后设置的类名

[css] view plain copy
  1. <!--wxss-->  
  2. @import "../../../wxParse/wxParse.wxss";  
  3. page{  
  4.   background#fff;  
  5. }  
  6. .view-title{  
  7.   line-height80rpx;  
  8.   font-size48rpx;  
  9.   color:#0C0C0C;  
  10.   overflowhidden;  
  11.   text-overflow: ellipsis;  
  12.   display: -webkit-box;  
  13.   -webkit-line-clamp: 2;  
  14.   -webkit-box-orient: vertical;  
  15.   max-height190rpx;  
  16.   min-height80rpx;  
  17.   width:690rpx;  
  18.   padding:30rpx 30rpx 0;  
  19. }  
  20. .view-time-box{  
  21.   height66rpx;  
  22.   line-height66rpx;  
  23.   font-size30rpx;  
  24.   color:#999999;  
  25.   margin-bottom40rpx;  
  26.   padding:0 30rpx;  
  27. }  
  28. .view-date{  
  29.   margin-right20rpx;  
  30. }  
  31. .wxParse-img{  
  32.   margin-top:20rpx;  
  33.   displayblock;  
  34.   position:relative;  
  35.   top:0;  
  36.   left:50%;  
  37.   transform: translateX(-50%);  
  38. }  
  39. .wxParse-p{  
  40.   text-indent2em;  
  41.   margin-top:20rpx;  
  42.   color:#0C0C0C;  
  43.   line-height:50rpx;  
  44.   font-size:34rpx;  
  45.   padding:0 30rpx 30rpx;  
  46.   text-alignjustify;  
  47. }  

4.js

[javascript] view plain copy
  1. var WxParse = require('../../../wxParse/wxParse.js');  
  2. Page({  
  3.   
  4.   /** 
  5.    * 页面的初始数据 
  6.    */  
  7.   data: {  
  8.     title: '',  
  9.     date: "",  
  10.     time: "",  
  11.     id: ''  
  12.   },  
  13.   
  14.   /** 
  15.    * 生命周期函数--监听页面加载 
  16.    */  
  17.   onLoad: function (options) {  
  18.     this.setData({  
  19.       id:options.id  
  20.     })  
  21.   },  
  22.   onShow: function () {  
  23.     wx.showLoading({  
  24.       title: '加载中...',  
  25.     })  
  26.     var that = this;  
  27.   
  28.     // 模拟获取数据  
  29.     setTimeout(function () {  
  30.       that.setData({  
  31.         title:'侨宝柑普茶新会陈皮侨宝柑',  
  32.         date:"2018-03-01",  
  33.         time:"13:20:53"  
  34.       })  
  35.       var article = `  
  36.         <img src="../../../imgs/index/s.png"></img>  
  37.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  38.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  39.         <img src="../../../imgs/index/s.png"></img>  
  40.     <p>近两年,小青柑的火爆有目共睹,娇小玲珑的产品形态、便携式的消费场景、柑与茶结合的时尚方式以及独特的口感和养生功效,都在顺应着目前年轻化、多元化、便携化的茶叶消费市场需求,让它成为了一大爆品。</p>  
  41.       `;  
  42.       /** 
  43.       * WxParse.wxParse(bindName , type, data, target,imagePadding) 
  44.       * 1.bindName绑定的数据名(必填) 
  45.       * 2.type可以为html或者md(必填) 
  46.       * 3.data为传入的具体数据(必填) 
  47.       * 4.target为Page对象,一般为this(必填) 
  48.       * 5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选) 
  49.       */  
  50.       WxParse.wxParse('article''html', article, that, 20);  
  51.         
  52.       // 更改数据、获取新数据完成  
  53.       wx.hideLoading();  
  54.     }, 500)  
  55.   }  
  56. })  
具体的API可以去GitHub上查看:https://github.com/icindy/wxParse








蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务


微信小程序学习参考demo源码集合

seo达人

如果您想订阅本博客内容,每天自动发到您的邮箱中, 请点这里

微信小程序学习参考demo源码集合,仅供参考学习用途!!!

面对面翻译 微信小程序源码下载,语音翻译类小程序工具http://www.henkuai.com/thread-37499-1-1.html

开源微信小程序,小团队管理小程序下载 :http://www.henkuai.com/thread-37498-1-1.html

微信小程序多用户商城demo,还在开发中:http://www.henkuai.com/thread-37497-1-1.html

微信小程序抢课列表demo :http://www.henkuai.com/thread-37496-1-1.html

微信小程序地图实时显示demo:http://www.henkuai.com/thread-37495-1-1.html

高质量微信小程序UI组件库:http://www.henkuai.com/thread-37492-1-1.html

购房摇号助手微信小程序下载:http://www.henkuai.com/thread-37471-1-1.html

股票金融微信小程序客户端:http://www.henkuai.com/thread-37470-1-1.html
接龙微信小程序脚本,创建房间等等:http://www.henkuai.com/thread-37469-1-1.html
微信小程序统一中央服务器的思路,校园小情书联盟:http://www.henkuai.com/thread-37468-1-1.html
辅导员预约微信小程序:http://www.henkuai.com/thread-37467-1-1.html
仿星巴克用心说微信小程序:http://www.henkuai.com/thread-37466-1-1.html
微信小程序顶部滑动导航菜单栏:http://www.henkuai.com/thread-37465-1-1.html
微信小程序朋友圈点赞功能,让你的朋友圈秀起来:http://www.henkuai.com/thread-37464-1-1.html
微信小程序版 “前端TOP100”:http://www.henkuai.com/thread-37463-1-1.html
微信小程序3D轮播图效果示例:http://www.henkuai.com/thread-37459-1-1.html
微信小程序仿滴滴打车小程序源码下载,欢迎加入开发:http://www.henkuai.com/thread-37458-1-1.html
微信小程序仿青桔单车,打开地图扫码开锁:http://www.henkuai.com/thread-37436-1-1.html
微信小程序投票器,投票小程序源码:http://www.henkuai.com/thread-37434-1-1.html
微信小程序时间轴源码,记录中国LGBT事件:http://www.henkuai.com/thread-37433-1-1.html
微信小程序api拦截器,完美兼容原生小程序项目:http://www.henkuai.com/thread-37431-1-1.html
微信小程序使用map组件实现多点定位显示:http://www.henkuai.com/thread-37421-1-1.html
微信小程序商城前端,展示婴幼儿商品: http://www.henkuai.com/thread-37418-1-1.html
答题小程序免费送,有人用这个“小程序”每天做100000:http://www.henkuai.com/thread-37412-1-1.html

使用微信小程序map组件开发的一个demo,各种坑:http://www.henkuai.com/thread-37400-1-1.html

微信小游戏2048源码下载,经典的小游戏:http://www.henkuai.com/thread-37399-1-1.html

微信小程序-菜谱百科,小程序开发学习demo :http://www.henkuai.com/thread-37380-1-1.html

鲜切水果微信小程序,水果商城小程序:http://www.henkuai.com/thread-37379-1-1.html

微信小程序线上图书馆前端+后端源码下载,图书查询小程序 :http://www.henkuai.com/thread-37378-1-1.html

微信小程序日历打卡项目下载,轻巧好用的日历打卡组件:http://www.henkuai.com/thread-37367-1-1.html

微信小程序练手项目,包含抽屉效果、底部tab效果实现等:http://www.henkuai.com/thread-37365-1-1.html

【独立小程序】志汇餐饮8.6 小程序前端修复版本:http://www.henkuai.com/thread-37344-1-1.html

仿今日头条3.0 小程序前端 demo分享:http://www.henkuai.com/thread-37338-1-1.html

微信小程序真心话大冒险游戏,朋友聚会必备小程序:http://www.henkuai.com/thread-37337-1-1.html

微信小游戏头脑王者自动答题辅助插件,小游戏作弊工具:http://www.henkuai.com/thread-37336-1-1.html

微信小程序左滑操作自定义组件,让你的小程序开发更:http://www.henkuai.com/thread-37334-1-1.html

蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务

常用正则表达式20例

周周

   总结了工作中可能经常会用到的各类正则表达式的写法。
   方便以后进行查找,减少工作量。

   1. 校验基本日期格式

var reg1 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;
var reg2 = /^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$/;

   2. 校验密码强度
   密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

var reg = /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/;

   3. 校验中文 

   字符串仅能是中文。

var reg = /^[\\u4e00-\\u9fa5]{0,}$/; 4. 由数字、26个英文字母或下划线组成的字符串 var reg = /^\\w+$/; 5. 校验E-Mail 地址
同密码一样,下面是E-mail地址合规性的正则检查语句。
var reg = /[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?/; 6. 校验身份证号码
下面是身份证号码的正则校验。15 或 18位。
15位: var reg = /^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$/; 18位: var reg = /^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$/; 7. 校验日期
“yyyy-mm-dd” 格式的日期校验,已考虑平闰年。 var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/; 8. 校验金额
金额校验,到2位小数。 var reg = /^[0-9]+(.[0-9]{2})?$/; 9. 校验手机号
下面是国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码) var reg = /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$/;    10. 判断IE的版本
   IE目前还没被完全取代,很多页面还是需要做版本兼容,下面是IE版本检查的表达式。

var reg = /^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\\/[5-9]\\.0).*$/;

      11. 校验IP-v4地址

var reg = /\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b/;

     12. 校验IP-v6地址

var reg = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/;

      13. 检查URL的前缀
   应用开发中很多时候需要区分请求是HTTPS还是HTTP,通过下面的表达式可以取出一个url的前缀然后再逻辑判断。

if (!s.match(
    /^[a-zA-Z]+:\/\//
  )) {
  s =
    'http://' +
    s;

}

      14. 提取URL链接
   下面的这个表达式可以筛选出一段文本中的URL。

var reg = /^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/;    15. 文件路径及扩展名校验
   验证 windows下文件路径和扩展名(下面的例子中为.txt文件)
var reg = /^([a-zA-Z]\\:|\\\\)\\\\([^\\]+\\)*[^\\/:*?"<>|]+\\.txt(l)?$/;       16. 提取Color Hex Codes
   有时需要抽取网页中的颜色代码,可以使用下面的表达式。
var reg = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; 17. 提取网页图片
   假若你想提取网页中所有图片信息,可以利用下面的表达式。
var reg = /\\< *[img][^\\>]*[src] *= *[\\"\']{0,1}([^\\"\'\ >]*)/;    18. 提取页面超链接
   提取html中的超链接。

var reg = /(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>/;

   19. 查找CSS属性
   通过下面的表达式,可以搜索到相匹配的CSS属性。

var reg = /^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}/;

   20. 抽取注释
   如果你需要移除HMTL中的注释,可以使用如下的表达式。

var reg = /<!--(.*?)-->/;

浅谈jQuery之动画

seo达人

如果您想订阅本博客内容,每天自动发到您的邮箱中, 请点这里

背景

jQuery提供了JS未能提供的动画效果,利用jQuery的动画效果,可以极大的简化JS动画部分的逻辑

滑入滑出动画

  1. 滑入动画

    定义:以下拉方式动画效果将html内容显示出来

    使用方式:

    $(selector).slideDown(time,function) 
    $(selector).slideDown(2000) 
    $(selector).slideDown() 
    $(selector).slideDown(fast/normal/slow)

    time代表执行动画的时间,function代表动画执行完之后所要执行的函数

  2. 滑出动画

    定义:以上滑方式动画效果将html内容隐藏出来

    使用方式:

    $(selector).slideUp(time,function) 
    $(selector).slideUp(2000) 
    $(selector).slideUp() 
    $(selector).slideUp(fast/normal/slow)

    time代表执行动画的时间,function代表动画执行完之后所要执行的函数

  3. 滑入滑出切换动画

    定义:在滑入滑出动画间切换

    使用方式:

    $(selector).slideToggle(time,function) 
    $(selector).slideToggle(2000) 
    $(selector).slideToggle() 
    $(selector).slideToggle(fast/normal/slow)

淡入淡出动画

  1. 淡入动画

    作用:让元素以淡淡的进入视线的方式展现出来

    使用方式

    $(selector).fadeIn(time,function) 
    $(selector).fadeIn(2000) 
    $(selector).fadeIn() 
    $(selector).fadeIn(fast/normal/slow)

  2. 淡出动画

    作用:让元素以淡淡的离开视线的方式隐藏起来

    使用方式

    $(selector).fadeOut(time,function) 
    $(selector).fadeOut(2000) 
    $(selector).fadeOut() 
    $(selector).fadeOut(fast/normal/slow)

  3. 淡入淡出切换动画

    作用:让元素在淡入淡出动画切换

    使用方式

    $(Selector).fadeToggle(time,function) 
    $(selector).fadeToggle(2000) 
    $(selector).fadeToggle() 
    $(selector).fadeToggle(fast/normal/slow)

  4. 修改opacity

    作用: 修改opacity的值

    使用方式

    $(Selector).fadeTo(time,opacity,function) 
    time可以是字符串,可以是具体数字 
    也可只有参数一、参数二

显示隐藏动画

  1. 显示动画

    作用: 将Html结构显现出来

    使用方式

    $(Selector).show(time,function) 
    $(selector).show(2000) 
    $(selector).show() 
    $(selector).show(fast/normal/slow)

  2. 隐藏动画

    作用: 将Html结构隐藏起来

    使用方式

    $(Selector).hide(time,function) 
    $(selector).hide(2000) 
    $(selector).hide() 
    $(selector).hide(fast/normal/slow)

停止动画

  • 定义:停止正在执行的动画

  • 使用方式:

    $(selector).stop() 
    stop()中可以有两个参数,参数一:后续动画是否执行,参数二:当前动画是否执行完毕,默认的是(false,false),注意第一个参数,true代表的是后续动画不执行 
    ———————————————————————————— 
    第一种:(false,false) 
    后续动画会执行,当前动画不会执行完 
    第二种:(false,true) 
    后续动画会执行,当前动画会执行完 
    第三种:(true,false) 
    后续动画不会执行,当前动画不会执行完 
    第四种:(true,true) 
    后续动画不会执行,当前动画会执行完

自定义动画

  • 作用:执行一组CSS属性的自定义动画

  • 使用方式:

    $(selector).animate({CSS定义},time,function())

蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务

基于jQuery的select2下拉框

周周

select2简介】
       select2.js是一个html select美化模拟类jquery插件,但是select2.js又远非简单的模拟美化那么简单,它还具有搜索功能,多选功能(可限制选择数量),ajax方式加载数据,可以设置placeholder……
【引入文件】
      <linkrel="stylesheet" href="./css/select2.css">
      <scriptsrc="./js/jquery-2.1.0.js"></script>
      <scriptsrc="./js/select2.full.js"></script>
select2的简单用法】


  • 设置禁用状态disabled,如:$(".js-example-disabled").prop("disabled",false);
  • 默认值设置:$("#select2").val("1").trigger("change");
  • 多选的默认值可以使用:$("#select2").val(["1","2"]).trigger("change"); 这样传递数组过
  • select2还有丰富的自定义事件

  JavaScript

$("#select2").on("select2:open", function (e) { log("select2:open", e); });
 
$("#select2").on("select2:close", function (e) { log("select2:close", e); });
 
$("#select2").on("select2:select", function (e) { log("select2:select", e); });
 
$("#select2").on("select2:unselect", function (e) { log("select2:unselect", e); });
 
$("#select2").on("change", function (e) { log("change"); });


select2的其他组件】

      一、多选效果
      效果图

161511wc0em4p5ictpk0k6.gif



代码如下
Html代码

<div class="box1 div">

   <p>多选下拉框</p>

<select id="sel_menu1" multiple="multiple" class="form-control">

  <optgroup label="系统设置">

  <option value="1">用户管理</option>

  <option value="2">角色管理</option>

  <option value="3">部门管理</option>

  <option value="4">菜单管理</option>

  </optgroup>

  <optgroup label="订单管理">

  <option value="5">订单查询</option>

  <option value="6">订单导入</option>

  <option value="7">订单删除</option>

  <option value="8">订单撤销</option>

  </optgroup>

  <optgroup label="基础数据">

  <option value="9">基础数据维护</option>

  </optgroup>

  </select>

</div>


JS代码

$("#sel_menu1").select2({[/align]
         tags: true,
         maximumSelectionLength: 3 //最多能够选择的个数

      });


二、图文结合效果
效果图

161544vqrri760rldcbg5d.gif


代码

Html代码

<div class="box2 div">
     <p>图文结合的效果</p>
     <select id="sel_menu2" class="js-example-templating js-states form-control">
          <optgroup label="系统设置">
  <option value="1">用户管理</option>
   <option value="2">角色管理</option>
   <option value="1">部门管理</option>
  <option value="1">菜单管理</option>
  </optgroup>
  <optgroup label="订单管理">
  <option value="1">订单查询</option>
  <option value="1">订单导入</option>
   <option value="1">订单删除</option>
  <option value="1">订单撤销</option>
   </optgroup>
  <optgroup label="基础数据">
  <option value="1">基础数据维护</option>
  </optgroup>
      </select>
</div>

JS代码

$("#sel_menu2").select2({
            templateResult: formatState,
            templateSelection: formatState
        });
        function formatState(state) {
            if (!state.id) {
                return state.text; 
            }
  var $state = $('<span><img src="./image/' + state.element.value.toLowerCase() + '.png" class="img-flag" /> ' + state.text + '</span>'
            );
            return $state;
        };


日历

链接

个人资料

蓝蓝设计的小编 http://www.lanlanwork.com

存档