• jquery 选择器、属性和CSS、文档处理、筛选、事件、动画效果


    录:

    1、jQuery介绍
    2、jQuery的基本语法
    3、jQuery 对象和 dom 对象转换
    4、选择器(9种之1--基本)
    5、选择器(9种之2--层级选择器)  [类似css复合选择器的概念]
    6、选择器(9种之3--基本过滤)
    7、选择器(9种之4--内容过滤)
    8、选择器(9种之5--可见性过滤)
    9、选择器(9种之6--属性)
    10、选择器(9种之7--子元素过滤)
    11、选择器(9种之8--表单过滤)
    12、选择器(9种之9--表单对象属性过滤)
    13、属性
    14、CSS类:添加、移除、切换样式
    15、获取或设置html代码/文本/value值
    16、CSS---jQuery的css()方法
    17、位置
    18、文档处理
    19、案例:下拉选择标签(选中添加)
    20、案例:手动显示或隐藏
    21、筛选
    22、筛选案例--QQ用户分组
    23、事件
    24、页面加载
    25、事件绑定
    26、事件案例:文字提示
    27、事件案例:图片提示(扩展)
    28、效果(动画)
    29、事件冒泡
    30、浏览器默认动作  

    1、jQuery介绍    <--返回目录
        * JS类库:JavaScript库封装了很多预定义的对象和实用函数;能帮助使用者建立有高难度交互客户端页面,并且兼容各大浏览器。
        * 当前流行的JavaScript库
            - jQuery,最流行
            - 淘宝UI:http://docs.kissyui.com/
            - Bootstrap,来自Twitter,是目前很受欢迎的前端框架。
              Bootstrap是基于HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得Web开发更加快捷。基于jQuery一个UI工具

        * jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
        * 由美国人John Resig在2006年1月发布
        * jQuery是免费、开源的
        
        * jQuery版本介绍:jquery-1.8.3.js  源码js,开发中使用,可以方便查看源码
          jquery-1.8.3.min.js  压缩版,回车换行删掉,变量简化,生产环境下使用,小

        * 优点:
            - 核心理念是write less,do more(写得更少,做得更多)
            - 轻量级:源码1.11.js大小是286kb,压缩班1.11.min.js大小是94.1k。如果使用GZIP压缩更小。
            - 兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)
            - jQuery的语法设计可以使开发者更加便捷
            - 例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能
            - jQuery能够使用户的html页面保持代码和html内容分离
            - 不用再在html里面插入一堆js来调用命令了,只需要定义id即可
            - jQuery提供API让开发者编写插件,有许多成熟的插件可供选择
            - 文档说明很全

    2、jQuery的基本语法    <--返回目录

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
        <script src="../js/jquery-1.8.3.js"></script>
    <body>
        <input type="text" id="username" value="jack"/>
        <script type="text/javascript">
            var ele = document.getElementById("username"); // js 获取 dom 元素
            alert(ele.value); // js 对象属性 value
            
            var $ele = $(ele); // js 对象转为 jquery 对象
            alert($ele.val()); // jquery 对象方法 val()
            
            // jQuery获取数据,语法:$("选择器")  <==> jQuery("选择器")
            var a = $("#username"); // jquery 获取 dom 元素
            alert(a.val());
        </script>
    </body>
    </html>

    js 执行时,有加载顺序,以前将js代码写在html代码后。但是,通常把<script>放到<head>下面。解决方法为:

      js 代码

    <input type="button" id="btn1" value="按钮1" name="abc"/>
    <input type="text" id="username" value="jack">
    <input type="text" id="password" value="123"/>
    
    <script type="text/javascript">
        window.onload = function(){     //页面加载后执行
            var ele = document.getElementById("btn1");  //获取button元素
            ele.onclick = function(){   //给button元素绑定鼠标点击事件
                alert(ele.value);       //输出button元素的value属性的值
                alert(ele.id);          //输出button元素的id属性的值
                alert(ele.name);        //输出button元素的name属性的值
            };
        };
    </script>

      jquery 代码

    <input type="button" id="btn1" value="按钮1"/>
    <input type="text" id="username" value="jack"/>
    <input type="text" id="password" value="123"/>      
    <script type="text/javascript">
        $(document).ready(function(){  //jQuery页面加载
            $("#btn1").click(function(){  //给button元素绑定鼠标点击事件
                $("#username,#password").css("background-color","pink"); //基本选择器(id选择器)的使用,设置背景色为pink
            });
        });
    </script>

      js 注意:不可以输出div元素的name属性的值

    <div id="divid" name="divname">div的文本</div>
    var ele = document.getElementById("divid");
    alert(ele.id);//可以输出div元素的id属性的值
    alert(ele.name);//undefined,不可以输出div元素的name属性的值

    3、jQuery 对象和 dom 对象转换    <--返回目录

    <script type="text/javascript">
        //1 使用javascript获得DOM对象
        var username = document.getElementById("username");
        alert(username.value);
        
        //2 将 dom对象 转换成 jQuery对象
        // * 语法:$(dom对象)
        // * 建议:jQuery对象变量名,建议为$开头
        var $username = $(username);
        alert($username.val());                //获取value属性
        
        //3 将 jQuery对象 转换成 dom对象
        //3.1 jQuery对象内部使用【数组】存放所有的数据,可以使用数组的下标(索引)
        var username2 = $username[0];
        alert(username2.value);
        //3.2 jQuery提供函数 get() 转换成dom对象
        var username3 = $username.get(0);
        alert(username3.value);
    </script>

    4、选择器(9种之1--基本)    <--返回目录

      基本选择器

    #id ,   【id选择器】,<xxx id=""> 通过id值获得元素
    element,【标签选择器】,<xxx> 通过标签名获得元素
    .class ,【类别选择器】,<xxx class=""> 通过class值获得元素。注意:使用点开头
    s1,s2,... 多选择器,将多个选择器的结果添加一个数组中。[类似css的并联选择器]
    * 所有   [类似css的通配符选择器]

      

    5、选择器(9种之2--层级选择器)  [类似css复合选择器的概念]    <--返回目录

      层级选择器

    A  B ,获得A元素内部所有的B后代元素。(爷孙) [与css后代选择器类似]
    A > B ,获得A元素内部所有的B子元素。(父子,再往里面的不管) [与css子代选择器类似]
    A + B ,获得A元素后面的第一个兄弟B。(兄弟)
    A ~ B ,获得A元素后面的所有的兄弟B。(兄弟)

    6、选择器(9种之3--基本过滤)    <--返回目录

      基本过滤选择器

    :first        , 第一个
    :last        ,最后一个
    :eq(index) ,获得指定索引(注意索引从0开始)  eq是equal的简写
    :gt(index) 索引大于 
    :lt(index) 索引小于
    :even 偶数,从 0 开始计数。例如:查找表格的1、3、5...行(即索引值0、2、4...)
    :odd 奇数
    :not(selector)   去除与给定选择器匹配的元素,选择余下的所有元素
    ------------------------------
    :header  获得所有标题元素。例如:<h1>...<h6>
    :animated  获得所有动画
    :focus    获得焦点

      用法举例

    $("div:first").css("background-color","red");//给第一个div,设置背景色
    $("div:not(.one)")   //选择class不为one的所有div(选择所有div,去除class="one"的div)
    $("div:even")  //选择索引为偶数的div元素
    $("div:eq(3)") //选择索引为3的
    $(":header")  //选择所有标题元素

      案例:案例2:文本框内有默认文本;获到焦点,若文本内容为默认值,文本内容清空;失去焦点,若文本内容为空,设置为默认值

    <input type="text" value="请输入用户名" default="请输入用户名"/>
    <input type="text" value="请输入密码" default="请输入密码"/>
    <script type="text/javascript">
        $(document).ready(function(){  //jQuery页面加载
            $("input[type='text']").on("blur focus",function(){     //绑定(注册)blur focus事件
                //1 获得默认值,即获取default属性的值
                var ds = $(this).attr("default");       //$(this)表示表示当前对象
            
                //2 判断是否获得焦点
                if($(this).is(":focus")){  //":focus"表示是一个焦点对象
                    //2.1 获到焦点,若文本内容为默认值,文本内容清空
                    if($(this).val() == ds){    //$(this).val()表示获取value值
                        $(this).val("");    //$(this).val("")表示设置value值
                    }
                }else{
                    //2.2 失去焦点,若文本内容为空,设置为默认值
                    if($(this).val() == ""){
                        $(this).val(ds);
                    }
                }
            });
        });
    </script>

      绑定(注册)事件的两种方法:

    $("input[type='text']").blur(function(){...});
    或 $("input[type='text']").on("事件1 事件2",fn);//可以注册多个事件

    7、选择器(9种之4--内容过滤)    <--返回目录

      内容过滤选择器

    :empty  当前元素是否为空(是否有标签体--子元素、文本)
    :has(...)  当前元素,是否含有指定的子元素
    :parent    当前元素是否是父元素
    :contains( text ) 标签体是否含有指定的文本

      用法举例

    $("div:empty")   //选取没有文本,也没有子元素的div元素
    $("div:parent")  //选取含有子元素或文本的div元素
    $("div.has('.mini')")  //选取含有class="mini"子元素的div元素
    $("div:contains('di')")  //选取含有文本"di"的div元素

      

    8、选择器(9种之5--可见性过滤)    <--返回目录

      可见性过滤选择器

    :hidden    隐藏。特指 <xxx style="display:none;">  ,获得 <input type="hidden">
    :visible    可见(默认)

      案例

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <input type="button" id="btn1" value="按钮1"/></br></br>
        
        <div class="one" id="one" border="1" style="display:none;">
            id为one,class为one的div
        </div>
    
        <input type="hidden" value="隐藏表单1"/>
        <input type="hidden" value="隐藏表单2"/>
    </body>
    <script src="../js/jquery-1.8.3.js"></script>
    <script type="text/javascript">
    $("#btn1").click(function(){
        //选取隐藏的div元素,并利用jQuery的show()方法显示
        $("div:hidden").css("background-color","pink").show(1000);
        //打印<input type="hidden" value="">的value属性值,只打印第一个
        alert($("input:hidden").val());
        
        //遍历打印所有隐藏表单的value值
        $("input:hidden").each(function(){
            alert($(this).val());
        });
            
        //遍历打印所有隐藏表单的value值,index索引(从0开始),domEle就是this
        $.each($("input:hidden"),function(index, domEle){  
            alert(index + "@" + $(this).val());
        });
    });
    </script>
    </html>

    9、选择器(9种之6--属性)    <--返回目录

      属性选择器

    [属性名]                获得指定的属性名的元素
    [属性名=值]                获得属性名 等于 指定值的 的元素【1】
    [属性名!=值]            获得属性名 不等于 指定值的 的元素
    [as1][as2][as3]....        复合选择器,多个条件同时成立。类似 where ...and...and【2】
    ---------------------------------------
    [属性名^=值]            获得以属性值 开头 的元素
    [属性名$=值]            获得以属性值 结尾 的元素
    [属性名*=值]            获得 含有属性值  的元素

      用法举例

    <input type="text" value="abc" title="标题名称"/>
    
    alert($("input[title]").val());  //选取含有属性title的input元素
    $("input[title]").val("123");  //设置该元素的value属性的值为"123"
     
    alert($("input[title]").attr("title"));  //获取该元素的title属性的值,并打印
    $("input[title]").attr("title","这是标题吗")  //给该元素的title属性赋值
    alert($("input[title]").attr("title"));  //再次打印该元素的title属性的值
      
    $("input[title='test']")  //选取属性title的值等于"text"的input元素
    $("input[title !='text']")//选取属性title值不等于"test"的input元素,【没有属性title的也将被选中】
    
    组合选择器 $("div[id][title]")  //首先选取有属性id的div元素,然后在结果中选取有属性title的
    $("input[title][title!='text']")//首先要有title属性,然后,title!="text"

      

    10、选择器(9种之7--子元素过滤)    <--返回目录

      子元素过滤

    :nth-child(index)  ,获得第几个孩子,从1开始。
    :first-child , 获得第一个孩子
    :last-child , 获得最后孩子
    :only-child , 获得独生子

      用法举例

    //子元素使用前提,表达式前面必须是元素,比如$("div:nth-child(2)")
    //如果元素上添加了条件,必须使用空格,比如$(div[class='one'] :nth-child(2))
    $(div[class='one'] :nth-child(2)).css("background-color","red");//选取每个class为one的div父元素下的第2个子元素
    $(div.one :nth-child(2)).css("background-color","red");//效果同上
    
    对比
    $("div.one")  所有的div,自己的样式为one
    $("div .one")  所有的div中后代元素,样式为one(class="one"),参见层级选择器第一种

    11、选择器(9种之8--表单过滤)    <--返回目录

      表单过滤选择器

    :input  所有的表单元素。(<input> / <select> / <textarea> / <button>)
    :text                文本框<input type="text">
    :password        密码框<input type=" password ">
    :radio            单选<input type="radio">
    :checkbox        复选框<input type="checkbox">
    :submit            提交按钮<input type="submit">
    :image            图片按钮<input type="image" src="">
    :reset            重置按钮<input type="reset">
    :file                文件上传<input type="file">
    :hidden            隐藏域<input type="hidden">  ,还可以获得<xxx style="display:none"> 
                        其他值:<br> <option>  ,存在浏览器兼容问题
    :button            所有普通按钮。 <button >  或 <input type="button">

    12、选择器(9种之9--表单对象属性过滤)    <--返回目录

      表单对象属性过滤

    :enabled        可用
    :disabled        不可用。<xxx disabled="disabled"> 或<xxx disabled="">  或  <xxx disabled>
    :checked        选中(单选框radio、复选框 checkbox)
    :selected        选择(下拉列表 select option)

      用法举例

    $("input[name='s1']:checked").length;//获取name=s1的多选框选中的个数
    $("input[name='s1']:checked").size();//获取name=s1的多选框选中的个数
    
    $(select[name='s1']:selected).each(function(){
        $("#divId").append($(this).val());//将select选中的<option>元素的value值添加到<div id="divId">中
    });
    注意:$(this).val()获取option时,如果没有value值,将获取text的值;如果有就获取value值
    如果就想获取text的值,使用$(this).html()或$(this).text()

      

    13、属性    <--返回目录

        操作jquery对象属性:
            attr(name)   获得指定属性名的值
            attr(key ,val ) 给一个指定属性名设置值
            attr(prop ) 给多个属性名设置值。参数:prop  json数据
                {k : v , k : v , .....}
            removeAttr(name)  移除指定属性
        
        用法举例

    $("[name='username']").attr("disabled","disabled");//设置文本框不可用
    $("[name='username']").attr("disabled","");//设置文本框不可用
    $("[name='username']").removeAttr("disabled");//设置文本框为可用,必须移除属性disabled

    14、CSS类:添加、移除、切换样式    <--返回目录

      <xxx class="a  b  c  d  my ">
            addClass("my")  追加一个类--就是:添加一个样式
            removeClass("my")  将指定类移除--就是:移除一个样式
            toggleClass("my")  如果有my将移除,如果没有将添加----就是:切换样式

      案例:添加、移除、切换样式

    <style type="text/css">
        .textStyle{
            background-color:red;
        }
    </style>
    
    <script type="text/javascript">
        $(document).ready(function(){
            $("#btn1").click(function(){
                $("input[value='jack']").addClass("textStyle");//添加样式
            });
            $("#btn2").click(function(){
                $("input[value='jack']").removeClass("textStyle");//移除样式
            });
            $("#btn3").click(function(){
                $("input[value='jack']").toggleClass("textStyle");//切换样式
            });
        });    
    </script>
    
    <body>
        <input type="button" id="btn1" value="添加样式"/>
        <input type="button" id="btn2" value="移除样式"/>
        <input type="button" id="btn3" value="切换样式"/>
        </br></br>    
    
        <input type="text" value="jack"/>
    </body>

    15、获取或设置html代码/文本/value值    <--返回目录

    val()        获得value的值
    val(text) 设置value的值
    
    html()  获得html代码,含有标签
    html(...) 设置html代码,如果有标签,将进行解析。
    
    text() 获得文本值,将标签进行过滤
    text(...) 设置文本值,如果有标签,将被转义  -->   <  &lt;   &  &amp;  >  &lt;    &nbsp;

      用法举例

    获取标签div文本内容的值:$("div").text()或$(div).html()---------效果一样
    
    <bb>div的文本内容:我爱你</bb>
    var v = $("bb").html("<a href='#'>改了</a>");  //设置(或叫修改)div标签的文本内容

    16、CSS---jQuery的css()方法    <--返回目录

    <xxx style="key:value; key:value; ">
    css(name)  获得指定名称的css值
    css(name ,value) 设置一对值
    css(prop) 设置一组值 json

      用法举例

    $("div").css("border","1px solid red");
    $("div").css({
        "width","200px",
        "heigth","200px"    //最后没逗号
    });

    17、位置    <--返回目录

    offset()  获得左上角坐标 , 返回JSON对象,{"top":200, "left" : 100} 
    offset(...) 设置坐标。例如:$(this).offset({"top":0 , "left" : 0})
    scrollTop()  垂直滚动条 滚过的距离
    scrollLeft()  水平滚动条 滚过的距离
    height([...]) 获得 或 设置 高度
    width([...])获得 或 设置 宽度

    18、文档处理    <--返回目录

      内部插入

    A.append(B)  将B插入到A的内部后面(之后的串联操作,操作A)   ----------操作A,在A的内部追加B
        <A>
            ....
            <B></B>
        <A>
    A.prepend(B) 将B插入到A的内部前面       -----操作A,在A的内部最前面添加B
        <A>
            <B></B>
            ....
        <A>
    --------------------------------------------
    A.appendTo(B) 将A插入到B的内部后面 (之后的串联操作,操作A)
    A.prependTo(B)  

      外部插入

    A.after(B)  , 将B插入到A后面(同级)------操作A,在A的后面添加B
        <A></A>
        <B></B>
    A.before(B) ,将B插入到A前面  --------操作A,在A的前面添加B 
        <B></B>
        <A></A>
    -----------------------------------
    A.insertAfter(B) , 将A插入到B后面(同级)
        <B></B>
        <A></A>
    A.insertBefore(B) 将A插入到B前面
        <A></A>
        <B></B>

      删除

    empty()  清空标签体(清空文本,会删除绑定事件)
    $ele.html("") 清空文本,但不会删除绑定事件,发生内存泄漏
    
    remove() 删除当前对象。如果之后再使用,元素本身保留,绑定事件 或 绑定数据 都会被移除
    detach() 删除当前对象。如果之后再使用,元素本身保留,绑定事件 或 绑定数据 都保留

      绑定数据

    data(name) 获得
    data(name,value) 设置

      绑定数据用法 举例

    $(#city).data("","");//绑定数据
    $(#city).data("");//获得数据

      复制

    clone(even) 克隆 even=true|false(默认)
    even :指示事件处理函数是否会被复制。V1.5以上版本默认值是:false

      替换

    A.replaceWith(B) ,使用A将B替换掉
    A.replaceAll(B) ,使用B将A替换掉

      包裹

    A.wrap(B) ,使用B将每一个A进行包裹(多个B)
        <B><A></A></B>
        <B><A></A></B>
         
    A.wrapAll(B) ,使用B将所有A进行包裹(一个B)
        <B>
            <A></A>
            <A></A>
        </B>
    
    A.wrapInner(B) ,使用B将每一个A的标签体包裹。
        <A><B>。。。</B></A>
        <A><B>。。。</B></A>
         
    A.unwrap() ,将A的父元素删除,自己留着

      

    19、案例:下拉选择标签(选中添加)    <--返回目录

    <html>
    <head>
    <title>标题</title>
    <!--样式-->
    <style type="text/css">
        .text{
            background-color:red;
        }
    </style>
            
    <!--导入jQuery-->
    <script type="text/javascript" src="./jquery/jquery-1.8.3.js"></script>
    
    <script type="text/javascript">
        $(document).ready(function(){
            $("#selectToRight").click(function(){
                $("#s2id").append($("#s1id option:selected"));    //"#s1id option"表示<select id="s1id">标签内所有的<option>
            });
    
            $("#selectAllToRight").click(function(){
                $("#s2id").append($("#s1id option"));    
            });
            
            $("#selectToLeft").click(function(){
                $("#s1id").append($("#s2id option:selected"));    
            });
    
            $("#selectAllToLeft").click(function(){
                $("#s1id").append($("#s2id option"));    
            });
        });
    </script>  
    </head>
        
    <body>
        <div style="float:left;">
            <select id="s1id" style="height:200px;100px;" multiple="multiple" >
                <option>景甜</option>
                <option>刘诗诗</option>
                <option>刘亦菲</option>
                <option>林志玲</option>
                <option>宋佳</option>
            </select>
            
            <div>
                <input type="button" value="选中添加到右边" id="selectToRight"/><br/>
                <input type="button" value="全部添加到右边" id="selectAllToRight"/>
            </div>
        </div>
        
        <div>
            <select id="s2id" multiple="multiple" style="height:200px;100px;">
                <option>aaa</option>
                <option>bbb</option>
                <option>ccc</option>
            </select>
            
            <div>
                <input type="button" value="选中添加到左边" id="selectToLeft"/><br/>
                <input type="button" value="全部添加到左边" id="selectAllToLeft"/>
            </div>
        </div>
        
    </body>
    </html>

      效果:

    20、案例:手动显示或隐藏    <--返回目录

    <html>
    <head>
    <title>动态列表效果.html</title>
    <style type="text/css">
     *{ margin:0; padding:0;}
    body {font-size:12px;text-align:center;}
    a { color:#04D; text-decoration:none;}
    a:hover { color:#F50; text-decoration:underline;}
    .SubCategoryBox {width:600px; margin:0 auto; text-align:center;margin-top:40px;}
    .SubCategoryBox ul { list-style:none;}
    .SubCategoryBox ul li { display:block; float:left; width:200px; line-height:20px;}
    .showmore { clear:both; text-align:center;padding-top:10px;}
    .showmore a { display:block; width:120px; margin:0 auto; line-height:24px; border:1px solid #AAA;}
    .showmore a span { padding-left:15px; background:url(img/down.gif) no-repeat 0 0;}
    .promoted a { color:#F50;}
    </style>
    
    <!--导入jQuery-->
    <script type="text/javascript" src="./jquery/jquery-1.8.3.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){    
            //从第5个开始,不要最后一个,控制显示或隐藏
            var $allLi = $("li:gt(4):not(:last)");
            
            $("span").click(function(){
                //判断是否隐藏
                if($allLi.is(":hidden")){
                    $allLi.show();//显示
                    $(this).html("隐藏部分");
                }else{
                    $allLi.hide();
                    $(this).html("显示全部");
                }
            });
        
        });
    </script>
    </head>
    <body>
        <div class="SubCategoryBox">
            <ul>
                <li ><a href="#">佳能</a><i>(30440) </i></li>
                <li ><a href="#">索尼</a><i>(27220) </i></li>
                <li ><a href="#">三星</a><i>(20808) </i></li>
                <li ><a href="#">尼康</a><i>(17821) </i></li>
                <li ><a href="#">松下</a><i>(12289) </i></li>
                <li ><a href="#">卡西欧</a><i>(8242) </i></li>
                <li ><a href="#">富士</a><i>(14894) </i></li>
                <li ><a href="#">柯达</a><i>(9520) </i></li>
                <li ><a href="#">宾得</a><i>(2195) </i></li>
                <li ><a href="#">理光</a><i>(4114) </i></li>
                <li ><a href="#">奥林巴斯</a><i>(12205) </i></li>
                <li ><a href="#">明基</a><i>(1466) </i></li>
                <li ><a href="#">爱国者</a><i>(3091) </i></li>
                <li ><a href="#">其它品牌相机</a><i>(7275) </i></li>
            </ul>
            
            <div class="showmore">
                <a href="#"><span>显示全部品牌</span></a>
            </div>    
        </div>            
    </body>
    </html>

      效果:

    21、筛选    <--返回目录
        * 之前选择器能完成的功能,筛选也提供了相同的函数,例如
            选择器:first        筛选 first()
        * 对比
            $("div:first")    直接获得第一个div (永远只能操作第一个)
            $("div").first()    先获得所有的div,从所有的中筛选出第一个。 (可以操作第一个,也可以操作所有)

        * 过滤
            eq(index | -index)  类似 :eq()
                index:正数,从头开始获得指定索引的元素。这个元素的位置是从0算起。0表示第一个
                -index:负数,从尾开始获得指定索引的元素。1算起。 -1表示最后一个
            first()    第一个  :first
            last()    最后一个  :last
            is()        判断
            hasClass()    判断是否是指定class 。<xxx class="my">
                这其实就是 is("." + class)。
            filter()  筛选出与指定表达式匹配的元素集合
            not()    将指定内容删除
            --------------------------------
            has()  子元素是否有
            slice(start , end)  截取元素 ,[2,4)  --> 2,3
            map()  jQuery对象 拆分成  jQuery对象数组

        * 查找
            <A>
                <B>
                    <C></C>
                    <D></D>
                    <E></E>
                    <F></F>
                </B>
            </A>
            B.children([...])   获得所有的子元素。CDEF       类似子代选择器
            A.find(D)  从指定的区域查询指定元素。D           类似后代选择器
            D.next()    下一个兄弟。E
            D.nextAll() 后面的所有兄弟。EF
            E.prev()    上一个兄弟。D  (previous)
            E.prevAll()  前面的所有兄弟。CD
            E.siblings()    所有兄弟。CDF
            E.parent()  父元素。B
            E.closest(A)  向上获得指定的父元素(含自己),如果获得返回一个对象,如果没有没有对象。
            ------------------------------

            C.nextUntil(E)  获得后面所有兄弟,直到指定条件位置。DE
            F.prevUntil(D)  获得前面所有兄弟,直到指定条件位置。DE

            E.parents()   获得所有的父元素。AB
            
            closest和parents的主要区别是:
                1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;
                2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选择器表达式去过滤;
                3,前者返回0或1个元素,后者可能包含0个,1个,或者多个元素。

        * 串联
            A.add(B)  将A和B组合一个对象 。类型 $("A,B")
            andSelf() : 将之前对象添加到操作集合中
                A.children().andSelf()  
                A    孩子    孩子和A
            end() :回到最近的一个"破坏性"操作之前
                A.children().children().end() .end()  
                A   孩子   孙子        孩子  A
            --------------------
            contents()  获得所有的子节点(子元素 和 文本)

    22、筛选案例--QQ用户分组    <--返回目录

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript" src="./jquery/jquery-1.8.3.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            //1所有分组列表项默认都是隐藏的。
            //2 分组(span)可以点击,控制下面的列表项显示或隐藏
            //3 当前分组列表项显示,其他分页隐藏(同时只有一个显示)
            $("div").children("a").hide().prev("span").click(function(){
                $(this).nextAll("a").toggle().parent().siblings("div").find("a").hide();
            });
        });
    </script>
    
    <style type="text/css">
        div *{
            display:block;
            width:200px;
        }
        div span{
            background-color : pink;
        }
    </style>
    </head>
    <body>
        <div>
            <span>追求中</span>
            <a>aa</a>
            <a>bb</a>
            <a>cc</a>
        </div>
        <div>
            <span>已交往</span>
            <a>aaa</a>
            <a>bbb</a>
            <a>ccc</a>
        </div>
        <div>
            <span>已分手</span>
            <a>a</a>
            <a>b</a>
            <a>c</a>
            <a>d</a>
        </div>    
    </body>
    </html>

    23、事件    <--返回目录

    jQuery 提供额外的事件,用于完善javascript缺失的
        - focusin 和 focusout
            ** focusin 获得焦点。类似js的focus。
                focusin事件跟focus事件区别在于,他可以在父元素上检测子元素获取焦点的情况。
            ** focusout 失去焦点。类似js的blur。
                focusout事件跟blur事件区别在于,他可以在父元素上检测子元素失去焦点的情况。

        - mouseenter 和 mouseleave    
            ** mouseenter 鼠标移入。类似js的mouseover
                与 mouseover 事件不同,只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。
                如果鼠标指针穿过任何子元素,同样会触发 mouseover 事件。

            ** mouseleave 鼠标移出。类似js的mouseout
                与 mouseout 事件不同,只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
                如果鼠标指针离开任何子元素,同样会触发 mouseout 事件。

      案例:常见事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <style type="text/css">
        #e02{
            border: 1px solid #000000;
            height: 200px;
            width: 200px;
        }    
    </style>
    <script type="text/javascript" src="./jquery/jquery-1.8.3.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#e01").blur(function(){
                $("#textMsg").html("文本框失去焦点:blur");
            }).focus(function(){
                $("#textMsg").html("文本框获得焦点:focus");
            }).keydown(function(){
                $("#textMsg").append("键盘按下:keydown");
            }).keypress(function(event){
                $("#textMsg").append("键盘按:keypress");
            }).keyup(function(){
                $("#textMsg").append("键盘弹起:keyup");
            }).select(function(event){
                //支持谷歌
                var sub = $(this).val().substring(event.target.selectionStart,event.target.selectionEnd);
                $("#textMsg").html("文本内容被选中:select , " + sub);
            });
            
            var i = 0;
            $("#e02").mouseover(function(){
                $("#divMsg").html("鼠标移入:mouseover");
            }).mousemove(function(){
                $("#divMsg").html("鼠标移动:mousemove , " + i++ );
            }).mouseout(function(){
                $("#divMsg").html("鼠标移出:mouseout");
            }).mousedown(function(){
                $("#divMsg").html("鼠标按下:mousedown");
            }).mouseup(function(){
                $("#divMsg").html("鼠标弹起:mouseup");
            });
            
            $("#e03").click(function(){
                $("#buttonMsg").html("单击:click");
            }).dblclick(function(){
                $("#buttonMsg").html("双击:dblclick");
            });
            
        });
    </script>
    </head>
    <body>
        <input id="e01" type="text" /><span id="textMsg"></span> <br/>
        <hr/>
        <div id="e02" ></div><span id="divMsg"></span> <br/>
        <hr/>
        <input id="e03" type="button" value="可以点击"/><span id="buttonMsg"></span> <br/>
    </body>
    </html>

    24、页面加载    <--返回目录
        * 标准API
            $(document).ready(function(){...});
            等价于 jQuery(document).ready(fn);
        * 简化版
            $(function(){...}) 等价于 jQuery(function(){...})

    25、事件绑定    <--返回目录
        * 处理    (下面方法内的参数type 和 events都是指事件)
            bind(type ,fn)  给当前对象绑定一个事件。例如:A.bind("click", fn );  类似:A.click( fn );
            unbind(type ) 解绑bind绑定事件

            one(type ,fn ) 给当前对象绑定一次事件。
            -----------------------------------------
            on(events , fn) 提供绑定事件处理程序所需的所有功能。完成3个方法功能.bind(), .delegate(), 和 .live().
            off(events) 解绑

            trigger(type) 在每一个匹配的元素上触发某类事件。例如:A.trigger("submit")  ,类似 A.submit();
            triggerHandler(type) 在每一个匹配的元素上触发某类事件。但不会执行浏览器默认动作,也不会产生事件冒泡。

        * 委派
            live(type , fn) 绑定事件,之后动态添加同样的成员,也具有相同的事件。
            die(type) 解绑事件
            
            -例子
                $(".myClass").live("click",function(){
                    $("body").append("<input type='button' value='新生的按钮' class='myClass'/>");  //动态添加同样的成员,也具有相同的事件
                                                                                                    //live换成on后,新添加的成员,不再有click事件
                });
            
                <body>
                <input id="btn1" type="button" value="按钮1" class="myClass"/>
                </body>
            
        * 切换
            hover(over , out)
                简化版,鼠标移入和移出  ,A.mouseover( fn ).mouseout( fn)  简化 A.hover( fn , fn )
            toggle( fn , fn , fn ,...) 执行click事件,每点击一次执行一个fn,然后循环

        * jQuery可以给事件加别名  click.a   click.b

    26、事件案例:文字提示    <--返回目录

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>文字提示</title>
     <!--   引入jQuery -->
     <script src="./jquery/jquery-1.8.3.js" type="text/javascript"></script>
    <style type="text/css">
    body{
        margin:0;
        padding:40px;
        background:#fff;
        font:80% Arial, Helvetica, sans-serif;
        color:#555;
        line-height:180%;
    }
    p{
        clear:both;
        margin:0;
        padding:.5em 0;
    }
    /* tooltip */
    #tooltip{
        position:absolute;
        border:1px solid #333;
        background:#f7f5d1;
        padding:1px;
        color:#333;
        width:300px;
        display:none;
    }
    </style>
    <script type="text/javascript">
        $(function(){
            //将自带的提示,替换成 自定义提示
            
            $(".mytooltip").mouseover(function(event){
                
                //1 获得绑定的数据
                var title = $(this).data("mytitle");
                if(! title){  //没有
                    //获得自带提示
                    title = $(this).attr("title");
                    //将自带提示删除
                    $(this).removeAttr("title");
                    //绑定数据
                    $(this).data("mytitle",title)
                }
                
                //2 创建div
                var $new = $("<div id='tooltip'></div>");
                //3设置提示
                $new.html(title);
                
                //4定位
                $new.offset({"left":event.pageX + 5,"top":event.pageY - 20});
                
                //5追加到body,并显示
                $new.appendTo("body").show();
            }).mouseout(function(){
                //删除
                $("#tooltip").remove();
            }).mousemove(function(event){
                // 重写定位
                $("#tooltip").offset({"left":event.pageX + 5,"top":event.pageY - 20});
            });
            
        });
    
    </script>
    </head>
    <body>
    <p><a href="#" class="mytooltip" title="这是我的超链接提示1.">提示1.</a></p>
    <p><a href="#" class="mytooltip" title="这是我的超链接提示2.">提示2.</a></p>
    <p><a href="#" title="这是自带提示1.">自带提示1.</a></p>
    <p><a href="#" title="这是自带提示2.">自带提示2.</a> </p>
        
    </body>
    </html>

    27、事件案例:图片提示(扩展)    <--返回目录

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>图片提示</title>
     <!--   引入jQuery -->
     <script src="./jquery/jquery-1.8.3.js" type="text/javascript"></script>
    <style type="text/css">
    body{
        margin:0;
        padding:40px;
        background:#fff;
        font:80% Arial, Helvetica, sans-serif;
        color:#555;
        line-height:180%;
    }
    img{border:none;}
    ul,li{
        margin:0;
        padding:0;
    }
    li{
        list-style:none;
        float:left;
        display:inline;
        margin-right:10px;
        border:1px solid #AAAAAA;
    }
    
    /* tooltip */
    #tooltip{
        position:absolute;
        border:1px solid #ccc;
        background:#333;
        padding:2px;
        display:none;
        color:#fff;
    }
    </style>
    <script type="text/javascript">
        $(function(){
            var x = 10;
            var y = 20;
            var href;
            
            $("a[class=tooltip]").mouseover(function(e){
                //1 获取对应标签的自带提示
                //var title = $("a[class=tooltip]").attr("title");
                //this代表的是DOM对象(页面中的元素)
                href = this.href;
                
                //删除自带提示
                this.href = "";
                
                //2 创建标签用于自定义提示
                var $div = $("<div id='tooltip'><img src='"+href+"'></img></div>");
                
                //3 将自定义提示的标签,添加到body标签下
                $("body").append($div);
                
                //4 如何调整显示位置(相对鼠标的坐标值:e.pageX和e.pageY)
                $("#tooltip").css({
                    "top" : e.pageY + y + "px",
                    "left" : e.pageX + x + "px"
                }).show(1000);
                
            }).mouseout(function(){
                this.href = href;
                $("#tooltip").remove();
            }).mousemove(function(e){
                $("#tooltip").css({
                    "top" : e.pageY + y + "px",
                    "left" : e.pageX + x + "px"
                });
            });
        });
    </script>
    
    </head>
    <body>
    <h3>有效果:</h3>
        <ul>
            <li><a href="images/apple_1_bigger.jpg" class="tooltip" title="苹果 iPod"><img src="images/apple_1.jpg" alt="苹果 iPod" /></a></li>
            <li><a href="images/apple_2_bigger.jpg" class="tooltip" title="苹果 iPod nano"><img src="images/apple_2.jpg" alt="苹果 iPod nano"/></a></li>
            <li><a href="images/apple_3_bigger.jpg" class="tooltip" title="苹果 iPhone"><img src="images/apple_3.jpg" alt="苹果 iPhone"/></a></li>
            <li><a href="images/apple_4_bigger.jpg" class="tooltip" title="苹果 Mac"><img src="images/apple_4.jpg" alt="苹果 Mac"/></a></li>
        </ul>
    
    
    <br/><br/><br/><br/>
    <br/><br/><br/><br/>
    
    
    <h3>无效果:</h3>
    <ul>
            <li><a href="images/apple_1_bigger.jpg" title="苹果 iPod"><img src="images/apple_1.jpg" alt="苹果 iPod" /></a></li>
            <li><a href="images/apple_2_bigger.jpg" title="苹果 iPod nano"><img src="images/apple_2.jpg" alt="苹果 iPod nano"/></a></li>
            <li><a href="images/apple_3_bigger.jpg" title="苹果 iPhone"><img src="images/apple_3.jpg" alt="苹果 iPhone"/></a></li>
            <li><a href="images/apple_4_bigger.jpg" title="苹果 Mac"><img src="images/apple_4.jpg" alt="苹果 Mac"/></a></li>
        </ul>
    </body>
    </html>

     28、效果(动画)    <--返回目录

    * 基本:通过改变元素 高度和宽度 进行显示或隐藏
            show(speed,fn) 显示
                参数1:speed速度。显示的时间,单位:毫秒。固定字符串:("slow","normal", or "fast")
                参数2:fn 回调函数。动画效果完成之后回调函数。
            hide(speed,fn) 隐藏
            toggle(speed,fn) 切换
        
        * 滑动:通过改变元素 高度  进行显示或隐藏
            slideDown(speed,fn)  显示
            slideUp(speed,fn) 隐藏
            slideToggle(speed,fn) 切换
                
                        
        * 淡入淡出:通过改变元素  透明度  进行显示或隐藏
            fadeIn() 显示
            fadeOut() 隐藏
            fadeToggle() 切换
            fadeTo(speed,opacity,fn) 指定透明度
                参数2:opacity 透明度,一个0至1之间表示透明度的数字

    29、事件冒泡    <--返回目录
        * 解释:子元素事件执行时,一并触发父元素相同的事件
        * 如何防止事件冒泡
            - 方式1;return false;
            - 方式2:使用event对象提供的函数
                1)事件回调函数function(event)
                2)event.stopPropagation();
                
    30、浏览器默认动作    <--返回目录
        * <a href="www.baidu.com">链接</a>
          href就是<a>标签的默认动作
        * 如何阻止
            方式1:
                return false;
            方式2:
                event.preventDefault();

    ---

  • 相关阅读:
    C语言中条件表达式求最大值和最小值
    面向对象编程:Java的简单数据类型
    JAVA学习经验谈
    JAVA的入门基础一些精典
    面向对象编程:Java复杂数据类型用法
    面向对象编程:Java的简单数据类型
    面向对象编程:Java collection更有效管理elements
    从C++到Java 理解面向对象是关键所在
    JAVA学习经验谈
    JAVA的入门基础一些精典
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/13581900.html
Copyright © 2020-2023  润新知