zoukankan      html  css  js  c++  java
  • WebApp开发-Zepto

    zepto.js自己去官网下载哈。

    DOM操作

    $(document).ready(function(){
        var $cr = $("<div class='cr'>插入的div</div>");
        // 插入操作
        $("#a").append($cr);
        $cr.appendTo($("#a"));
        $("#a").prepend($cr);
        $cr.prependTo($("#a"));
        $("#a").after($cr);
        $cr.insertAfter($("#a"));
        $("#a").before($cr);
        $cr.insertBefore($("#a"));
    
        // 删除 removeempty
        $("ul li").remove();
        $("ul li").empty();
    
        // 复制节点
        $("ul li").click(function(){
            $(this).clone().appendTo("ul");
        });
    
        // 替换节点  replaceWith
        $("p").replaceWith("<span>是的,哈哈</span>");
    
        // 包裹节点   wrap  wrapAll
        $("p").wrap("<div></div>");
        $("p").wrapAll("<div></div>");
    });

    属性与样式操作

    $(document).ready(function(){
        // 属性操作  attr("title")  attr("name","att")  attr({"name":"att" , "class":"test"})    removeAttr("title name")
        console.log($("div").attr("title"));
        $("div").attr("name","att");
        $("div").attr({"name":"att" , "class":"test"})
        $("div").removeAttr("title name");
    
        // 添加样式操作   addClass
        $("div").addClass("red").addClass("fs");
        $("div").addClass("red fs");
        
        // 删除class类   removeClass
        $("div").removeClass();
    
        // 切换样式  toggle   toggleClass
        $("button").click(function(){
            $("div").toggle();   // show和hide的切换
            $("div").toggleClass("red");   // addClass("red")和removeClass("red");
        });    
    
        // 判断是否含有某个样式  hasClass
        console.log($("div").hasClass("red fs"))
    });

    遍历节点

    $(document).ready(function(){
        // next是取得紧邻的后面的同辈元素
        console.log($("#one h3").next());
    
        // prev获取紧邻的前面的同辈元素
        console.log($("#one a").prev());
    
        // siblings获取前后的所有同辈元素
        console.log($("#one p").siblings());
    
        // parent与parents直系亲属
        console.log($("b").parent());
        console.log($("b").parents());
    });

    CSS-DOM操作

    $(document).ready(function(){
        $(".one").css("color", "red").css("fontSize", "36px");
        $(".one").css({
            color:"red",
            fontSize:"36px"
        });
        $(".one").width(500);
        $(".one").height(500);
    });

    ready与onload的区别

        // html文件 、 css文件 、 js文件 、 图片文件等     
        $(document).ready(function(){
            // DOM加载完毕,图片并未完全加载,调用时机比较快
        });
        window.onload = function(){
            // 全部文件加载完毕,调用时机比较久
        }

    事件开头简写

        $(document).ready(function(){
    
        })
        $(function(){
    
        })
        $().ready(function(){
    
        })

    事件绑定

        $(".one").bind("click", function(e){
            console.log("one被点击了!!!")
        })
    
        $(".one").click(function(e){
            console.log("我是简写方式");
        })
    
        $(".one").on("click", function(e){
            console.log("我是on事件");
        });
    ---------------------------------
        // on 
        $("ul").on('click', 'li', function(e){
    
        })
        // off 
        $("li").off();


    zepto不支持事件捕获

    事件其他用法

        // 自定义事件
        $("div").bind("muke", function(){
            console.log("触发自定义事件");
        });
        $("div").trigger("muke");
    
        // 命名空间
        $("div").bind("click", function(){
            console.log("我是普通的click事件");
        })
        $("div").bind("click.muke", function(){
            console.log("我是click.muke的事件");
        })
    
        $("div").unbind(".muke");
        
        // 绑定多个事件
        $("div").bind("click", function(){
            console.log(111)
        }).bind("touchstart", function(){
            console.log(222)
        })

    动画

        $('button').on('click' , function(){
            $('div').toggle('slow');   //切换元素的显示与隐藏
            $('div').hide(3000);
            $('div').show('slow');
            $('div').fadeIn('slow');
            $('div').fadeOut('slow');
            $('div, button').fadeToggle('slow');
            $("div").fadeTo(3000 , 1)
        })

    animate() 动画函数

        $("div").animate({left:"300px", height:"300px"}, 3000, function(){
            alert("动画执行完毕");
        })

    Ajax

        function Ajax(){
            var xmlHttpReq = null;
            if(window.ActiveXObject){
                // 兼容IE5、IE6
                xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
            }else{
                xmlHttpReq = new XMLHttpRequest();
            }
    
            xmlHttpReq.open("GET", "test.php", true);
            xmlHttpReq.onreadystatechange = RequestCallBack;
    
            function RequestCallBack(){
                if(xmlHttpReq.readyState == 4){
                    if(xmlHttpReq.status == 200){
                        console.log("获取数据:"+xmlHttpReq.responseText);
                    }
                }
            }
            xmlHttpReq.send(null);
        }

    ajax请求

        // get
        $.get('urlxxx',function(response){
          $(document.body).append(response)
        });
    
        // post
        $.post('urlxxx', { sample: 'payload' }, function(response){
             
        });
        
        // ajax
        $.ajax({
          type: 'GET',
          url: 'urlxxx',
          data: { name: 'Zepto.js' },
          dataType: 'json',
          success: function(data){
            this.append(data.project.html)
          },
          error: function(xhr, type){
            alert('Ajax error!')
          }
        })

    touch模块
    先引入touch.js

      <script type="text/javascript" src="../../lib/touch.js"></script>

    touch.js

    ;(function($){
      var touch = {},
        touchTimeout, tapTimeout, swipeTimeout, longTapTimeout,
        longTapDelay = 750,
        gesture
    
      function swipeDirection(x1, x2, y1, y2) {
        return Math.abs(x1 - x2) >=
          Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down')
      }
    
      function longTap() {
        longTapTimeout = null
        if (touch.last) {
          touch.el.trigger('longTap')
          touch = {}
        }
      }
    
      function cancelLongTap() {
        if (longTapTimeout) clearTimeout(longTapTimeout)
        longTapTimeout = null
      }
    
      function cancelAll() {
        if (touchTimeout) clearTimeout(touchTimeout)
        if (tapTimeout) clearTimeout(tapTimeout)
        if (swipeTimeout) clearTimeout(swipeTimeout)
        if (longTapTimeout) clearTimeout(longTapTimeout)
        touchTimeout = tapTimeout = swipeTimeout = longTapTimeout = null
        touch = {}
      }
    
      function isPrimaryTouch(event){
        return (event.pointerType == 'touch' ||
          event.pointerType == event.MSPOINTER_TYPE_TOUCH)
          && event.isPrimary
      }
    
      function isPointerEventType(e, type){
        return (e.type == 'pointer'+type ||
          e.type.toLowerCase() == 'mspointer'+type)
      }
    
      $(document).ready(function(){
        var now, delta, deltaX = 0, deltaY = 0, firstTouch, _isPointerType
    
        if ('MSGesture' in window) {
          gesture = new MSGesture()
          gesture.target = document.body
        }
    
        $(document)
          .bind('MSGestureEnd', function(e){
            var swipeDirectionFromVelocity =
              e.velocityX > 1 ? 'Right' : e.velocityX < -1 ? 'Left' : e.velocityY > 1 ? 'Down' : e.velocityY < -1 ? 'Up' : null
            if (swipeDirectionFromVelocity) {
              touch.el.trigger('swipe')
              touch.el.trigger('swipe'+ swipeDirectionFromVelocity)
            }
          })
          .on('touchstart MSPointerDown pointerdown', function(e){
            if((_isPointerType = isPointerEventType(e, 'down')) &&
              !isPrimaryTouch(e)) return
            firstTouch = _isPointerType ? e : e.touches[0]
            if (e.touches && e.touches.length === 1 && touch.x2) {
              // Clear out touch movement data if we have it sticking around
              // This can occur if touchcancel doesn't fire due to preventDefault, etc.
              touch.x2 = undefined
              touch.y2 = undefined
            }
            now = Date.now()
            delta = now - (touch.last || now)
            touch.el = $('tagName' in firstTouch.target ?
              firstTouch.target : firstTouch.target.parentNode)
            touchTimeout && clearTimeout(touchTimeout)
            touch.x1 = firstTouch.pageX
            touch.y1 = firstTouch.pageY
            if (delta > 0 && delta <= 250) touch.isDoubleTap = true
            touch.last = now
            longTapTimeout = setTimeout(longTap, longTapDelay)
            // adds the current touch contact for IE gesture recognition
            if (gesture && _isPointerType) gesture.addPointer(e.pointerId)
          })
          .on('touchmove MSPointerMove pointermove', function(e){
            if((_isPointerType = isPointerEventType(e, 'move')) &&
              !isPrimaryTouch(e)) return
            firstTouch = _isPointerType ? e : e.touches[0]
            cancelLongTap()
            touch.x2 = firstTouch.pageX
            touch.y2 = firstTouch.pageY
    
            deltaX += Math.abs(touch.x1 - touch.x2)
            deltaY += Math.abs(touch.y1 - touch.y2)
          })
          .on('touchend MSPointerUp pointerup', function(e){
            if((_isPointerType = isPointerEventType(e, 'up')) &&
              !isPrimaryTouch(e)) return
            cancelLongTap()
    
            // swipe
            if ((touch.x2 && Math.abs(touch.x1 - touch.x2) > 30) ||
                (touch.y2 && Math.abs(touch.y1 - touch.y2) > 30))
    
              swipeTimeout = setTimeout(function() {
                if (touch.el){
                  touch.el.trigger('swipe')
                  touch.el.trigger('swipe' + (swipeDirection(touch.x1, touch.x2, touch.y1, touch.y2)))
                }
                touch = {}
              }, 0)
    
            // normal tap
            else if ('last' in touch)
              // don't fire tap when delta position changed by more than 30 pixels,
              // for instance when moving to a point and back to origin
              if (deltaX < 30 && deltaY < 30) {
                // delay by one tick so we can cancel the 'tap' event if 'scroll' fires
                // ('tap' fires before 'scroll')
                tapTimeout = setTimeout(function() {
    
                  // trigger universal 'tap' with the option to cancelTouch()
                  // (cancelTouch cancels processing of single vs double taps for faster 'tap' response)
                  var event = $.Event('tap')
                  event.cancelTouch = cancelAll
                  // [by paper] fix -> "TypeError: 'undefined' is not an object (evaluating 'touch.el.trigger'), when double tap
                  if (touch.el) touch.el.trigger(event)
    
                  // trigger double tap immediately
                  if (touch.isDoubleTap) {
                    if (touch.el) touch.el.trigger('doubleTap')
                    touch = {}
                  }
    
                  // trigger single tap after 250ms of inactivity
                  else {
                    touchTimeout = setTimeout(function(){
                      touchTimeout = null
                      if (touch.el) touch.el.trigger('singleTap')
                      touch = {}
                    }, 250)
                  }
                }, 0)
              } else {
                touch = {}
              }
              deltaX = deltaY = 0
    
          })
          // when the browser window loses focus,
          // for example when a modal dialog is shown,
          // cancel all ongoing events
          .on('touchcancel MSPointerCancel pointercancel', cancelAll)
    
        // scrolling the window indicates intention of the user
        // to scroll, not tap or swipe, so cancel all ongoing events
        $(window).on('scroll', cancelAll)
      })
    
      ;['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown',
        'doubleTap', 'tap', 'singleTap', 'longTap'].forEach(function(eventName){
        $.fn[eventName] = function(callback){ return this.on(eventName, callback) }
      })
    })(Zepto)

    使用时:

      <script>
      $(document).ready(function(){
        $('#touch_test').bind('touchmove', function(e) { e.preventDefault() })
        
        listen_to('#touch_test')
        
        function listen_to(el) {
          $(el).tap(function(){
            console.log(' | tap!')
          })
          .doubleTap(function(){
            console.log(' | double tap!')
          })
          .swipe(function(){
            console.log(' | swipe!')
          })
          .swipeLeft(function(){
            console.log(' | swipe left!')
          })
          .swipeRight(function(){
            console.log(' | swipe right!')
          })
          .swipeUp(function(){
            console.log(' | swipe up!')
          })
          .swipeDown(function(){
            console.log(' | swipe down!')
          })
          .longTap(function(){
            console.log(' | long tap!')
          })
          .singleTap(function(){
            console.log(' | single tap!')
          })
        }
      }); 
      </script>

    插件的写法
    先编写自定义插件js文件
    zepto.color.js

    ;(function($){
        //一个插件的写法
        $.fn.color = function(option){
            var options = $.extend({
                col: "blue",
                fz : "20px"
            }, option);
    
            this.css("color", options.col);
            this.css("fontSize", options.fz);
            return this;
        }
    })(Zepto);
    
    //多组插件写法
    /*
    ;(function($){
        
        $.extend($.fn, {
            color: function(option){
                var options = $.extend({
                    col: "blue",
                    fz : "20px"
                }, option);
    
                this.css("color", options.col);
                this.css("fontSize", options.fz);
    
                return this;
            },
    
            background: function(option){
                var options = $.extend({
                    bg: "blue"
                }, option);
    
                this.css("background", options.bg);
    
                return this;
            }
        })
    
    })(Zepto);
    */

    使用时:

        <script type="text/javascript" src="../../lib/zepto.color.js"></script>
        <script type="text/javascript">
            $("div").color({
                col : "red"
            }).addClass("helloworld");
        </script>
  • 相关阅读:
    android 多线程
    Uva 10881 Piotr’s Ants 蚂蚁
    LA 3708 Graveyard 墓地雕塑 NEERC 2006
    UVa 11300 Spreading the Wealth 分金币
    UVa 11729 Commando War 突击战
    UVa 11292 The Dragon of Loowater 勇者斗恶龙
    HDU 4162 Shape Number
    HDU 1869 六度分离
    HDU 1041 Computer Transformation
    利用可变参数函数清空多个数组
  • 原文地址:https://www.cnblogs.com/createwell/p/13507449.html
Copyright © 2011-2022 走看看