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

    一.js选择器

    document.getElementById();//一个元素
    document.getElementsByClassName();//HTMLCollection元素集合
    document.getElementsByName();//NodeList节点的集合
    document.getElementsByTagNameNS(); //htmlCollection元素的集合
    //说明:元素集合是节点集合的一个子集
    document.querySelector();//选择符合匹配的第一个节点
    document.querySelectorAll();//选择符合匹配的所有元素节点的集合

    二.jquery中的选择器

    var element1=$('#div1,#div2');//得到一个一个类数组的JQUERY对象

    1.类数组变成数组

    element1 = Array.prototype.slice.call(element1);

    2.基本的选择器

    $('#p1')
    $('.list')
    $('.lise>li')
    $('a[href="http://www.baidu.com"]')
    $('a[href*="www"]')
    $('a[href^="http"]')
    $('a[$="com"]')
    $('a[href][trget]')
    $('a[href!="http://www.baidu.com"]')//jquer独有的css没有的

    3.位置筛选器

    :first//首个
    :last//最后一个
    :even//偶数0,2,4····
    :odd//奇数1,3,5.......
    :eq(n)//等于n
    :gt(n)//大于n
    :lt(n)//小于n

    4.子元素筛选器

    $('li:first-child')
    :first-child
    :last-child
    :first-ot-type
    :last-of-type
    :nth-child(1)//1,2,3.........
    :nth-last-child(2n)
    :nth-of-type()
    :nth-last-of-type()
    :only-child
    :only-of-type

    5.表单筛选器

    $('input:checkd')
    :checked
    :disabled
    :enabled
    :focus
    :button
    :checkbox
    :File
    :image
    :input
    :password
    :radio
    :reset
    :selected
    :submit
    :text

    6.内容选择器

    $(':empty')
    :empty//内容为空的元素css
    :contains(text)//包含某文本的元素
    :has(select)//匹配某选择器的元素
    :parent//包含子元素或文本元素的元素.
    //其他筛选器
    //jquery特有的
    :lang(languaage)
    :not(select)
    :root
    :target
    //jquery and css
    :hidden//不可见元素
    :visible//可见元素
    :header//标题元素
    :animated//执行动画的元素

    三.jquery选择器的性能优化

    1.尽量使用css中有的选择器
    2.避免过度约束
    3.尽量id开头
    4.尽量使选择器右面更精确
    5.避免过度使用全局选择器
    6.缓存选择器结果
    logTime(function(){code});//打印执行code代码用时到控制台

    四.jquery对象dom对象

    1.检测

    dom.nodeType->节点类型数量
    jquery.jquery->版本号

    2.转换

    dom = jquerydom.get(index);或者dom=jquerydom[index];
    jquerydom = $('dom');

    五.创建html元素的两种方式

    1.$('<a>',{
    text:"baidu",
    href:"http://www.baidu",
    title:"baidu"
    });
    2.$('<a>baidu<a>').attr({
    text:"baidu",
    href:"http://baidu.com",
    title:"baidu"
    });
    //此时创建的html元素存在浏览器内存中为未加到页面中

    六.从jquerydom集合中提取元素方式

    jquerydom[index] 返回dom
    jquerydom.get(index) 返回dom
    jquerydom.eq(index) 返回jquerydom->$('li:eq(1)')
    jquerydom.first() 返回jquerydom
    jquerydom.last() 返回jquerydom
    //使用方法比筛选器选择器性能高
    jquerydom.toArray() 返回一个dom对象的数组功能和不加参数的get()一样

    七.通过关系查找元素

    1.通过父子

    jquerydom.parent(selector) 获取满足匹配的直接父元素
    jquerydom.parents(selector) 获取满足匹配的所有祖先元素
    jquerydom.closet(selector)从当前元素主机向上查找,返回最先匹配的元素,能获取到本身
    jquerydom.children()所有子元素的集合五文本节点
    jquerydom.contents() 所有子元素的集合包括文本节点
    jquerydom.find() 所有后代元素的集合

    2.通过兄弟关系

    jquerydom.next('li') //下一个兄弟
    jquerydom.nextAll('li') //后面的所有兄弟
    jquerydom.nextUntill('li') //直到某个兄弟
    erydom.prev('li') //前一个兄弟
    jquerydom.prevAll('li')  //前面的所有兄弟
    jquerydom.prevUntill('li')  //直到某个兄弟
    erydom.siblings()//所有的同辈元素

    八.筛选遍历jQuery对象

    1.添加选择de对象

    $('.item1, .item2')or $('.item1').add(".item2")

    2.删除过滤对象

    $('.item1, .item2').not('.item1');删除了.item1对象
    $('.item1, .item2').not(function (index) {
    return $(this).hassClass(item1);
    });
    $('.item1, .item2').filter('.item1'); 删除了除.item1对象外的其他对象
    $('.item1, .item2').filter(function(index){
    return $(this).hassClass(item1);
    });

    3.关于二级菜单

    $('li').has('ul'); //含有二级菜单的li

    4.转换元素

    $('li').slice(start, end);[start, end )
    $('li').map(function(index,dom){
    return this.id;
    });//返回的值仍然是jquerydom

    5.遍历jquerydom

    $('li').each(function(index,dom){
    this.title=this.innerText;
    });

    6.其他

    $('li').is(selector); //li中至少一个符合匹配则返回true

    九.特性和属性

    1.获取设置

    var dom=document.getElementById("dom1");
    dom.atrributes()获取所有的特性
    dom.getAttribute("style");获取style特性的值
    (dom.setAttribute("style",{color:red}))
    dom.style获取style属性的值
    特性的值总是字符串,属性的值不一定是字符串
    2.特性属性的同步规则
    1.attribute是dom对象中本来就存在的,特性属性的值同步
    2.attribute是boolean类型的,不同步
    3.attribute不是dom内建的,不同步

    3.操作元素的特性attr

    1.设置特性
    jquerydom.attr('title')
    jquerydom.attr('title','baidu')
    jquerydom.attr({
    title:"baidu"
    })
    jquerydom.attr(function(index,previousvalue){
    return "new" + previousvalue;
    })
    2.删除特性
    jquerydom.removeAttr("attrname");

    4.操作元素的prop

    1.//设置属性
    jquerydom.prop('title')
    jquerydom.prop('title', 'baidu')
    jquerydom.prop({
    title: "baidu"
    })

    5.特性属性总结

    1.特性不区分大小写,属性区分大小写,dom中采用驼峰形式,jquery中采用全小写形式
    2.特性一次可删除多个,属性一次只能删除一个
    3.boolean类型尽量采用属性设置

    6.在元素中存取数据

    在dom上存取数据,直接设置在特性或属性可能会导致内存泄漏,影响浏览器性能
    1.获取数据
    jquerydom.data(name)
    2.存数据
    jquerydom.data(name, value) ;
    jquerydom.data({});
    !!data方法设置的数据可以保留类型
    3.检测dom是否存在数据
    $.hasData(dom);

    十.修改元素样式

    jquerydom.addClass([name1,name2]);添加类
    jquerydom.removeClass([name1, name2]);删除类
    jquerydom.toggleClass(name,true / false);切换类
    //应用实例
    $('li').each(function(index){
    $(this).toggleClass(".red",index%3===0);
    });
    jquerydom.hasClass(name);检测类
    //修改样式css
    jquerydom.css(name,value);
    jquerydom.css({
     
    
    });
    jquerydom.css(name,function(index,value){
    return parseInt(value,10);//value带有单位px
    });

    十一.尺寸

    1.内容的尺寸
    jquerydom.width()
    jquerydom.height()
    第一个元素的尺寸
    2.包含内边距
    jquerydom.innerWidth();
    jquerydom.innerHeight();
    3.包含内边距和边框
    jquerydom.outerWidth();
    jquerydom.outerHeight();
    4.包含内边距和边框和外边距
    jquerydom.outerWidth(true);
    jquerydom.outerHeight(true);

    十二.位置

    1.元素在相对于document中的位置
    第一元素有效,只对可见元素有效
    jquerydom.offset()
    返回{left:value top:value}
    2.元素相对于最近的一个具有position:relative父元素的位置,如没有此父元素,则相对于document
    jquerydom.position();
    返回{left: value top: value}
    3.滚动条位置
    $(html).scrollTop(value)
    $(html).scrollLeft(value)

    十二.获取设置元素内容

    1.包含标签,只对集合中的第一个元素起作用
    $('div.red').html(content);
    2.纯文本
    $('div.blue').text(content);
    以上插入内容方法,会覆盖原来的内容,插入元素最好用append()方法。

    十三.移动或插入元素

    ([content1,..]).appendTo(jquerydom);
    jquerydom.append([content1,..]);插入元素内部的最后
    jquerydom.prepend([content1,..]);插入到元素内部的最前面
    举例:
    $('li').append('<a href="#">阅读更多<a>');
    jquerydom.after(content,[content1,..])元素之后插入内容
    jquerydom.before(content,[content1,..])元素之前插入内容
    //移动
    jquerydom.append(selector);
    <div class="box">
    <h1><h1>
    <ul>
    <p>loer rrsdxt fystfxcgf hcg</p>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <ul>
    </div>
    $('ul').append($('h1'));将h1移动到ul内部的最后;

    十四.包裹元素

    $('li').wrap('<div class="box2"></div>');将每个li用div包裹起来
    $('li').wrap($('h1'));将h1元素复制然后包裹每个li
    $('li').wrapAll($('h1'));将所有的li包裹在一个h1对象中
    $('p').wrapInner('<div></div>');用div包裹p中文本的内容
    $('p').unwrap('<div></div>');取消包裹,删除直接的父元素

    十五.删除元素

    jquerydom.remove();从页面上将该对象删除,删除该对象绑定的事件和附加的数据,但仍存在浏览器jquery对象集合中
    jquerydom.detach();从页面上将该对象删除,保留对象绑定的事件附加的数据,仍存在浏览器jquery对象集合中
    jquerydom.empty();只删除内容,不删除该元素,保留时间及数据

    十六.复制

    jquerydom.clone([event1[,deepEvent2]])
    event1是否复制本身的数据及绑定的事件
    event2是否复制其子元素的数据及绑定的事件
    案例:$('item1').clone(true,true).appendTo('.item2');

    十七.替换元素

    replaceWith(content)
    $('h1').replaceWith('<h2>h2</h2>');
    replaceAll(conyent)
    ('<h2>h2</h2>').replaceAll('h1');

    十八.这些方法为破坏性方法,在使用链式语法时需要先用end()方法恢复。

    appendTo(target)
    prependTo(target)
    insertBefore(target)
    insertAfter(target)
    replaceAll(target)

    十九.处理表单元素的值

    .val(value)
    1.获取单选框的值
    $('input[type="radio"]:checked').val();
    2.获取复选框的值
    val()方法只返回元素集合中第一个元素的值,所以多选框值在同时选中多个选项时需要遍历
    var value=$('input[type="checkbox"]:checked').map(function(index.obj){
    return $(this).val();
    }).toArray();

    二十.DOM事件模型

    1.DOM0级事件模型

    onclick
    dom0级事件<div onclick="chnageimg()"></div>
    dom.onclick=function(){};
    只支持一个dom事件处理函数,后加的函数会覆盖掉前一个函数
    考虑到兼容性:
    dom.onclick=function(event){
    event=event||window.event;获取事件对象
    target=event.target||event.srcElement;获取事件目标
    }
    //事件冒泡
    元素在触发事件时,回依次向上触发父元素的上的相同的事件
    阻止事件冒泡的方法event.stopPropagation(); or event.cancelBubble = true;

    2.DOM2级事件模型

    //事件的捕获
    事件会从该元素到其子元素依次进行触发
    addEventListener(eventType,listener,useCapture)
    useCapture=false时,只触发事件冒泡机制
    useCapture=true时,只触发事件捕获机制
    dom.addEventListener('click',function(event){
     
    
    },true);

    二十一.Jquery事件模型

    1.提供了统一的事件处理方法
    2.允许添加多个事件处理函数
    3.使用标准事件名称(不加on)
    4.事件实例作为事件处理函数的第一个参数
    5.标准化事件实例最常用的属性
    6.提供了统一的事件取消和阻止默认行为的方法

    1.添加事件处理函数

    jquerydom.on(eventType,selector,data,function);
    实例:
    $('div').on('click','div#name',{foo:'bar'},function(event){
    console.log(event.data);
    }).on('mouseover',function(event){
     
    
    });

    2.事件的委托

    <ul>
    li*300
    </ul>
    给300个li绑定点击事件
    可以将事件委托给父元素ul,给ul绑定点击事件即可
    $('ul').on('click',function(event){
    通过event.target来获取被点击的li元素
    });

    3.统一的方法和属性

    event.stopPropagation()阻止事件冒泡
    event.preventDefault()阻止默认行为
    return false;同时阻止冒泡和默认行为

    5.一次性处理函数

    jquerydom.one(eventType,selector,data,function);

    6.移除事件处理

    jquerydom.off([eventType,],[selector,],function);

    7.主动触发事件

    1.使用方法触发
    jquerydom.trigger(eventType,[,data]);
    jquerydom.triggerHandler(eventType,[,data]);
    !!triggerHandler和trigger相比
    1.不会触发浏览器默认事件
    2.不会产生事件,冒泡
    3.只触发对象集合中第一元素的事件处理函数
    4.返回的是事件处理函数的返回值,不是jQuery对象
    2.触发快捷方法
    jquerydom.eventType();不传参数就可以主动触发
    例:
    $('ul').click();
    //
    jquerydom.hover()方法,拥有mouseout和mouseenter的综合功能
     

    8.自定义事件

    使用on()+trigger();
    //标记该条已读
    $('li').on('markAsRead',function(event){
    console.log('已读%o'+$(this));
    }).on('click',function(event){
    $(this).trigger('markAsRead');
    });
    //全部标记已读
    $('button').on("click",function(event){
    $('li').trigger('markAsRead');
    });
    //事件命名空间

    9.关于jquey插件

    1.去jquery官方插件主页搜索
    网址:http://plugins.jquery.com/
    2.去npm搜索
    3.github上搜索
    //通过cdn引入插件效果最好
    http://www.bootcdn.cn/
    //几个实用的插件
    1.chosen选择框
    https://github.com/harvesthq/chosen
    2.pickdate日期选择输入
    https://github.com/amsul/pickadate.js
    3.Magnific-Popup点击图片弹出放大
    https://github.com/dimsemenov/Magnific-popup
  • 相关阅读:
    Docker 镜像
    为什么要用 Docker
    什么是 Docker
    python编码
    Python File(文件) 方法
    Python 日期和时间
    Python 字符串字典内置函数&方法
    Python 元组内置函数
    Epos消费管理系统使用发布订阅实现数据库SQL SERVER 2005同步复制
    Epos消费管理系统复制迁移SQL SERVER 2005数据库
  • 原文地址:https://www.cnblogs.com/wangliuyong/p/9191528.html
Copyright © 2011-2022 走看看