zoukankan      html  css  js  c++  java
  • Python学习笔记Day17

    JQuery

    http://jquery.cuishifeng.cn/

    模块 <<==>> 类库

    DOM/BOM/JS类库

    1. 查找元素
    2. 操作元素
    • 版本

      1.x 1.12
      2.x
      3.x

    • 导入

        `<script src="jquery-1.12.4.js"></script>`
        `JQuery.`
        `$.`
      
    • 转换

        jquery对象[0]   => Dom对象
        Dom对象         => $(Dom对象)
      

    选择器,直接找到某个或者某类标签

    1. #id
      $('#id')
    2. .class
      $(".c1")
    3. 标签
      $('a')
    4. 组合
      $('a,.c2,#i10')
    5. 层级
      $('#i10 a') 子子孙孙
      $('#i10>a') 儿子
      $('.c1+.c2') 匹配所有紧接在c1元素后的c2元素(包括子标签)
      $('.c1~.c2') 匹配所有与c1同辈的c2元素
    6. 基本
      i1:first
      i1:last
      i1:eq(index) 索引 从0开始
    7. 属性
      $('[alex]') 具有alex属性的所有标签
      $('[alex="123"]') alex属性等于123的标签
    8. 表单
      $(':text') # 匹配type='text'
      $("input[type='text']") # 利用属性查找代替
      :checkbox
      $(':disabled')
      $(':enabled')
      $(':checked')
      $(':selected')

    9. $('div:contains("John")') # 查找所有包含 "John" 的 div 元素

    实例:多选,反选,全选

    • .prop
      $('#tb :checkbox').prop('checked'); 获取值
      $('#tb :checkbox').prop('checked', true); 设置值
    • .xxxx批量操作
      jQuery方法内置循环: $('#tb :checkbox').xxxx
    • 循环.each
      $('#tb :checkbox').each(function(k){
          // k当前索引 0+
          // this,是DOM对象,当前循环的元素
          if(this.checked){}
          // $(this),转换为JQuery对象
          if($(this).prop('checked', true)){}
      })
      
    • 三元运算
      var v = 条件 ? 真值 : 假值

    筛选器,在选择器的基础上进行筛选

    • 下一个(同级)
      $('#i1').next()
      $('#i1').nextAll()
      $('#i1').nextUntil('#ii1') # 包括ii1
    • 上一个(同级)
      $('#i1').prev()
      $('#i1').prevAll() # 依次向上,第0个 --> 第n个
      $('#i1').prevUntil('#ii1')
    • 父标签
      $('#i1').parent()
      $('#i1').parents()
      $('#i1').parentsUntil()
    • 子标签
      $('#i1').children()
    • 兄弟标签
      $('#i1').siblings()
    • 寻找#i1中class为.c1的
      $('#i1').find('.c1') # JQuery支持链式编程,可不断循环
    • 过滤
      $('li:eq(0)')
      $('li').eq(1) #索引
      first()
      last()
      hasClass(class)

    文本操作

    $(..).text()            # 获取文本内容
    $(..).text("<a>1</a>")  # 设置文本内容,不解析HTML,当作字符串
    
    $(..).html()            # 获取标签
    $(..).html("<a>1</a>")  # 设置标签
    
    $(..).val()             # 查找value属性
    $(..).val("...")        # 设置value属性
    

    样式操作

    .addClass('c1')
    .removeClass()
    .toggleClass()      # 自动判断,有就删,没有就加
    

    属性操作

    # 专门用于自定义属性
        $(..).attr('n')         # 获取
        $(..).attr('n','v')     # 设置
        $(..).removeAttr('n')   # 移除
    # 专门用于checkbox,radio选择  如用attr会出现删除后无法重新添加
        $(..).prop('checked')
        $(..).prop('checked', true)
    =======利用属性操作替代prev等筛选,便于日后修改=======
    

    索引.index

    $(..).index()            # 获取当前标签在父标签下的索引
    $(..).children().eq(v)   # 寻找子标签下索引为v的标签
    

    文档处理

    .append(tag)    # 追加到子标签最后
    .prepend()      # 追加到子标签最前
    .after()        # 追加到当前标签后(兄弟)
    .before()
    

    删除或复制标签

    .remove()     # 删除标签   不加参数默认删除所有,加参数.#可进行筛选
    .empty('0')   # 清空标签内容
    .clone      # 复制标签内容
    

    css单样式处理,直接在标签style内操作

    $('t1').css('样式名称', '样式值')
    $('t1').css('样式名称', '')     #值为空时删除css属性
    

    点赞功能的实现

    - $('t1').append()
    - $('t1').remove()
    - setInterval  定时器
    - 透明度 1 >> 0
    - position
    - 字体大小,位置
    

    位置

    • 滚动框位置

        $('div').scrollTop()
        $(window).scrollTop()  无参数获取
        $(window).scrollTop(0) 有参数设置
        .scrollLeft([val])       水平
      
    • 获取标签在整个html中的坐标

        .offset()
        .offset().left
        .offset().top
      
    • 获取当前标签相对父标签(relative)的坐标(不一定是紧接着的父标签)

       .position()
      
    • 标签高度

        $('i1').height()           # 获取height
        $('i1').innerHeight()      # 获取height + padding
        $('i1').outerHeight()      # 获取height + padding + border
        $('i1').outerHeight(true)  # 获取height + padding + border + margin
            true小写
      
        # height -> padding -> border -> margin
      

    绑定事件

    DOM: 三种绑定方式

    jQuery:

    • 第一种

        $('.c1').click()
        $('.c1').....等
      
    • 第二种

        $('.c1').bind('click',function(){})
        $('.c1').unbind('click',function(){})
      
    • 第三种 委托,可以解决添加新标签其它方式无法绑定的问题,点击的时候才会绑定

        $('.c').delegate('a', 'click', function(){})
        $('.c').undelegate('a', 'click', function(){})
      
    • 第四种 3.0推荐

        $('.c1').on('click', function(){})
        $('.c1').off('click', function(){})
      

    阻止事件发生

    return false;
    
        DOM方式
            onclick="return Login();"   #绑定也需要加return
            function Login(){
                .....
                return false;
            }
        JQuery方式
            $().click(function(){
                $(':text,:password').each(function(){
                    ...
                    return false;   #循环内只终止循环
                })
                //可进行验证
                return false;
            })
    !!!each循环内的return false会终止整个循环!!!
    

    !!!页面框架加载完成后,自动执行,不需要所有元素都加载完成

    $(function(){
        //将绑定事件加在里面,以免有部分未加载完成事件不会执行
        $(...)
    })
    $().ajax()
    

    jQuery扩展

    • 第一种

        $.extend({
            'wangsen':function(){};
            })
        $.wangsen()    $.方法
      
    • 第二种

        $.fn.extend()
        $('.c1').wangsen()    $(..).方法
      
    • 导入js扩展包

        $.wangsen(),
      

      问题:
      1. 不同扩展包声明了同名扩展 ==> 暂无法解决
      2. 不同扩展包内的变量名重复 ==> 包在自执行函数内

                (function(arg){
                    var status = 1;
                    // 封装变量     只在当前作用域内生效
                    arg.extend()
                })(jQuery)      #传入jQuery或$参数
      

    作业

    一、# 纯高度,边框,外边距,内边距
    二、所有实例敲一遍
    三、编辑框

    作业问题

    1. 禁用div点击:

       .c1 { pointer-events: none; }
      
    2. 将input文本框设置为只读:

       $('').attr('readonly',true)
       $('').removeAttr('readonly')
      
    3. css添加与删除:

       $('').css('color','red')
       $('').css('color')
      
    4. 监测checkbox改变:

       $('').change(function(){})
       $('').delegate(':checkbox', 'change', function (){})
      
    5. jQ删除标签:

       $('').remove();
      
    6. 将function直接写在js中会默认执行,函数内的this代表当前window

  • 相关阅读:
    欢迎加入强哥的 Android 开发交流群
    HashMap和ConcurrentHashMap的区别,HashMap的底层源码
    angular ngIf 导致不点击屏幕,就无法显示内容的问题
    angular date 过滤器不兼容 ios 造成 列表循环渲染错误的问题
    部署Node.js到阿里云服务器CentOs
    使用手淘VW适配方案后造成伪类使用content报错的解决办法
    Vue 加载 Sass Loader 报错的解决方案
    Typescript中private、public、protected修饰符的区别
    搭建Android开发环境 以及 ionic 编译安卓app步骤
    前端开发规范:3-CSS
  • 原文地址:https://www.cnblogs.com/JeromeLong/p/13246491.html
Copyright © 2011-2022 走看看