• 笔记--《jq基础教程》


    《jQuery基础教程》
    章1:jQuery入门
    1.jQuery具有以下功能
    1)获得文档中的元素(ele)
    2)修改页面外观,(css)
    3)改变文档内容(dom)
    4)响应用户的交互操作 (事件)
    5)为页面添加动态效果
    6)无需刷新页面从服务器获取信息(ajax)
    7)简化创建的js任务
    2.$(document).ready()的意思是位于其中的所有代码会在DOM加载后立即执行。
    
    
    
    章2:选择符
    1.工厂函数$(),
    有3种基本的选择符:标签名、ID和类
    标签名	P $('p') 获取文档的所有段落
    ID		#smoe-id  $('#some-id') 根据id获取文档的一个元素
    类		.some-clas $('.some-class')   根据类名获取该类名的所有元素
    2.子元素组合符(>)
    选择id是select-plays的子元素中所有li元素,添加一个Class
    $(document).ready(function(){
    	#('#select-plays > li').addClass('hor');
    	#('#select-plays li:not(.hor)').addClass('sub-level');//没有hor类的添加一个sub-level类
    });
    3.属性选择符:通过HTML元素的属性选择元素。
    ^以什么开头
    $以什么结尾
    *通配符
    $('a[href^=http]').addClass();//以http开头的属性值的元素
    $('a[href$=.pdf').addClass();//以pdf结尾的属性值的元素
    4.自定义选择符,以冒号开头
    $('div.hor:eq(1)')选择div.hor是选择带有hor类的div元素,它会返回一个数组,eq(1)是返回这个数组的第二项
    $('div:nth-child(1)')是取得div列表的第一个元素等价于$('div:first-child')
    5.jq有两个有用的选择符:odd和:even
    6.基于表单的选择符
    :text、:checkbox 匹配属性值为选择符名称的输入元素 <input type="text">
    :radio、:image
    :submit、:reset
    :password、:file
    :input  输入字段、文本区、选择列表和按钮元素
    :button
    :enabled
    :disabled
    :checked
    :selected
    7.DOM遍历方法
    $('tr:odd').addClass('alt')等价于$('tr').filter(':odd').addClass('alt')
    :odd是奇数行
    :even是偶数行
    为奇行添加的代码添加alt
    filter()是筛选函数,还支持传入参数。
    $('a').filter(function(){
        return this.hostname&&this.hostname!=location.hostname;
    }).addClass('external')
    筛选出符合下面条件的a元素,并为其添加类。
    必须带有this.hostname的href属性。并且不等于location.hostname
    8.为特定单元格添加样式
    .next()是选择最近的同辈元素
    .nextAll()是选择全部同辈单元格
    .prev()
    .prevAll()
    .siblings() 选择能够处于相同DOM层次的所有其他元素。不包括自己。
    $(document).ready(function(){
        $('td:contains(Henry)').next().addClass('hightlight');
    })
    .parent()
    .children()所有儿子
    2)jq支持连缀,
    $('td:contains(Henry)').parent().children().addClass('hightlight');
    9.所有的选择符表达式和大多数的jq方法都是返回jq对象,使得其具有连缀能力。有时候希望返回DOM元素
    get()方法表示jq对象引用的第index个DOM元素
    $('#my-element').get(0).tagName;等价于$('#my-element')[0].tagName;
    
    章3:事件
    1.加载事件:在页面加载后执行$(document).ready()等价于js中的window.onload
    2.$(document).ready(function(){})的简写
    $().ready(function(){})
    $(function(){});
    3.交出$的使用权
    <script>
        jQuery.noConflict();
    </script>
    使用jQuery对象本身
    jQuery(document).ready(function($){
        //这里可以使用$
    })
    或者
    jQuery(function($){})
    4.使用bind()监听事件
    使用.bind()方法监听事件
    首先需要先得到jq对象:
    $(function(){
        $('$switcher-large').bind('click',function(){
            $('body').addClass('large');
        })
    })
    $(this)将当前的dom元素转成jq对象。便于操作。
    5.简写事件,不用bind
    $('#switcher .button').click(function(){})
    jq还提供的简写事件
    blur
    change
    click
    dblclick
    error
    focus
    keydown
    keypress
    keyup
    load
    mousedown
    mousemove
    mouseout
    mouseover
    resize
    scroll
    select
    submit
    unload
    6.除了ready()添加自定义事件,还可以使用.toggle()和.hover()添加自定义事件。
    1)如第一次点击触发第一个function,第二次点击触发第二个function,以此类推
    $(function(){
        $('#switcher h3').toggle(function(){
            $('#switcher .button').addClass('hidden')
        }),
        $('#switcher h3').toggle(function(){
            $('#switcher .button').removeClass('hidden')
        });
    })
    $(function(){
        $('#switcher h3').click(function(){
            $('#switcher button').toggleClass('hidden')
        })
    })
    2).hover()当鼠标悬停时触发第一个函数,离开时触发第二个函数
    $(function(){
        $('#switcher button').hover(function(){},function(){})
    })
    7.允许多个元素响应单击事件的一种策略称为事件捕获。首先会传给最外层元素.
    如,首先会传给div-->span-->a
    <div>
        <span><a></a></span>
    </div>
    8.与事件捕获相反策略是事件冒泡。从最下级开始向上传播。
    1)dom的标准是:采用事件冒泡。首先从一般元素到具体元素逐层捕获,最终返回到dom树的顶层。事件处理程序可以注册到该过程的任何一个阶段。
    2)冒泡的副作用:mouseover或mouseout 如果只是监听外层元素,当你离开内层元素时,向上传播,触发上层的事件。
    .hover()可以处理这种情况。
    9.通过事件对象改变事件的旅程
    防止它继续向上传播,通过事件对象判断。
    使用事件目标,如果当前事件对象的目标是当前元素,那么触发函数。
    通过event.target可以确认首先接受到事件的元素,即最先被点击的元素。
    $(document).ready(function(){
        $('#switcher').click(function(event){
            if(event.target==this){
                $('#switcher .button').toggleClass('hidden');
            }
            event.stopPropagation();
        })
    })
    2)停止事件传播 .stopPropagation()方法,可以完全阻止时间冒泡
    event.stopPropagation();
    10.默认操作。如表单的submit事件。使用stopPropagation()不能阻止默认操作的传播。应该使用 .preventDefault()。
    11.事件委托。通过事件委托,借助一个元素上的事件处理程序完成很多工作。
    下层的元素触发,交由上级元素来处理。
    比如一个ul中有多个li,要给li添加事件,用for太浪费时间。
    <body>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
        </ul>
    </body>
    $(function(){
        $("ul").on("click","li",function(){
            alert()
        })
    })
    例子2:
    $(function(){
        $('#switcher').click(function(event){ //由于冒泡父元素会拦截到事件
            if($(event.target).is('.button')){
                $('body').addClass();
                if(event.target.id=='switcher-narrow'){
                    $('body').addClass('narrow');
                }else if(event.target.id == 'switcher-large'){
                    $('body').addClass(large)
                }
                $('#switcher .button').removeClass('selected')
                $(event.target).addClass('selected')
                event.stopPropagation();
            }
        })
    })
    12.移除事件处理程序
    $('#switcher').unbind('click');
    13.事件的命名空间
    
    章4:效果
    
    章5:DOM操作
    1.操作属性
    id、ref、href
    通过.attr()和.removeAttr()方法来操class的属性
    首先是选择所在的dom然后修改attr
    $(function(){
        $('div.chapter a').each(function(index){
            $(this).attr({
                'rel':'external',
                'id': 'wikilink-'+index
            });
        });
    });
    2.强大的$()工厂函数
    通过$()不仅可以访问DOM。而且可以在圆括号中放入一组HTML元素,但是需要指定位置。
    $(function(){
        $('<a href="#top">back to top</a>')
         .insertAfter('div.chapter p');//等价于$('div.chapter p').after('<a href="#top">back to top</a>');
        $('<a id="top" name="top"></a>').prependTo('body');会将代码插到body中的开始位置。
    })
    
    .insertBefore('xx xx') 从这个dom的前面
    .insertAfter() 插到这个dom的后面
    $(function(){
        $('<ol id="notes"></ol>').insertAfter('div.chapter');
        $('span.fontnode').each(function(index){
            $(this)
                .brefore(
                    ['<a href="#foot-note-"',
                      index+1,
                      '" id="context-'
                      index+1,
                      '" class="context">'
                      '<sup>'+(index+1)+'</sup>',
                      '</a>'
                    ].join('')//数组的方法:将素组的所有元素连起来
                )
                .appendTo("#note")插到id为note的元素中去
                .append('&nbsp;(<a href="#context-'+(index+1)+
                                                    '">context</a>)'");
                .wrap('<li id="foot-note-'+ (index+1)+
                                                    '"></li>');
        });
    });
    []是一个数组直接量
    $(this),他表示迭代序列中的每一个主教
    包装wrap()方法:将元素包装在其他元素中
    3.复制元素
    jQuery的clone()方法
    $('div.chapter p:eq(0)').clone().insertBefore('div.chapter')将元素克隆一遍然后插在chapter的前面
    1)默认情况下,clone()方法不会复制匹配元素货期后代元素中绑定的事件。可以设置true让其连同事件一起复制.clone(true)
    2)修改clone元素的css
    
    4.总结
    1)在HTML中创建元素,使用$()工厂函数
    2)要在每个匹配的元素插入新元素,使用
    .append()
    .appendTo()
    .prepend()
    .prependTo()
    2)在每个匹配元素相邻位置插入元素
    .after()
    .insert()
    .before()
    .insertBefore()
    4)要在匹配元素的外部插入元素
    .wrap()
    .wrapAll()
    .wrapInner()
    5)要用新元素或文本替换每个匹配的元素
    .html()
    .text()
    .replaceAll()
    .replaceWith()
    6)要移除每个匹配的元素的中元素
    .empty()
    7)从文旦中一处每个匹配元素的元素及其后代,,但不实际删除它们
    .remove()
    
  • 相关阅读:
    25.大白话说java并发工具类-CountDownLatch,CyclicBarrier,Semaphore,Exchanger
    23.FutureTask基本操作总结
    22.线程池之ScheduledThreadPoolExecutor
    Jenkins + SVN搭建php持续集成
    Django学习系列之Form表单结合ajax
    Django学习系列之模板系统
    Django学习系列之路由系统
    zabbix学习系列之基础概念
    Python学习系列之反射
    Django学习系列之模板
  • 原文地址:https://www.cnblogs.com/kltsee/p/12591362.html
Copyright © 2020-2023  润新知