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

    jQuery 学习回顾

    回顾内容如下:

    jQuery 的语法:
        $("选择器")
        $(dom对象)
        $("<a>点我啊</a></br>").replaceAll("p");

    jQuery 的选择器:
        基本:#id、element、.class、s1,s2,... 、*
        层级:A B、A>B、A+B、A~B
        基本过滤::first、:last、:eq(index)、:gt(index)、:lt(index)、:even、:odd、:header、:animated、:focus
        内容过滤::contains(text)、:empty、:parent、:has(selector)
        可见过滤::visible、:hidden
        属性:[attr]、[attr=val]、[attr!=val]、[attr^=val]、[attr$=val]、[attr*=val]、[attr=val][][]
        子元素::nth-child(index)、:first-child、:last-child、:only-child
        表单过滤::input、:text、:password、:radio、:checkbox、:file、:submit、:reset、:image、:button、:hidden
        表单对象属性过滤::enabled、:disabled、:checked、:selected

    jQuery 的属性和CSS:
        属性:attr()、removeAttr()
        CSS类:addClass()、removeClass()、toggleClass()
        HTML代码/文本/值:val()与val(...)、html()与html(...)、text()与text(...)

        CSS:css(name, value)、css(name)、css(prop)
        位置:offset()与offset(...)  格式:{"top":100, "left":100}
              scrollTop()与scrollTop(...)、scrollLeft()与scrollLeft(...)
        尺寸:width()与width(...)、height()与height(...)

    jQuery 的文档处理:
        内部插入:append()、prepend()、appendTo()、prependTo()
        外部插入:after()、before()、insertAfter()、insertBefore()
        删除:empty()、remove()、detach() --> 绑定数据:data()与data(...)
        复制:clone(true)
        替换:replaceWith()、replaceAll()
        包裹:wrap()、wrapAll()、wrapInner()、unWrap()

    jQuery 的文档处理的小案例

    示例代码如下:
    1.左右select选择.html

    <!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="../js/jquery-1.8.3.js"></script>
            <script type="text/javascript">
                $(document).ready(function() {
                    // 左边
                    $("#left1").click(function() {
                        // 选中多个,只过第一个
                        $("#leftSelectId>option:selected:first").removeAttr("selected").appendTo("#rightSelectId");
                    });
                    $("#left2").click(function() {
                        // 选中几个,就过几个
                        $("#leftSelectId>option:selected").removeAttr("selected").appendTo("#rightSelectId"); // :selected 选择(指的是 下拉列表 select 标签中的 option 标签)
                    });
                    $("#left3").click(function() {
                        // 选中或者没选中,都过去
                        // $("#leftSelectId option").removeAttr("selected").appendTo("#rightSelectId"); // A B 获得A元素内部所有的B的后代元素。(爷孙)
                        $("#leftSelectId>option").removeAttr("selected").appendTo("#rightSelectId"); // A>B 获得A元素内部所有的B的子元素。(父子)
                    });

                    // 右边
                    $("input:eq(3)").click(function() {
                        // 选中多个,只过第一个
                        $("#rightSelectId>option:selected:first").removeAttr("selected").appendTo("#leftSelectId");
                    });
                    $("input:eq(4)").click(function() {
                        // 选中几个,就过几个
                        $("#rightSelectId>option:selected").removeAttr("selected").appendTo("#leftSelectId"); // :selected 选择(指的是 下拉列表 select 标签中的 option 标签)
                    });
                    $("input:eq(5)").click(function() {
                        // 选中或者没选中,都过去
                        // $("#leftSelectId option").removeAttr("selected").appendTo("#leftSelectId"); // A B 获得A元素内部所有的B的后代元素。(爷孙)
                        $("#rightSelectId>option").removeAttr("selected").appendTo("#leftSelectId"); // A>B 获得A元素内部所有的B的子元素。(父子)
                    });
                });
            
    </script>

            <style type="text/css">
                .textClass {
                    background-color#ff0000;
                }
            
    </style>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    <select id="leftSelectId" style="100px" multiple="multiple" size="10">
                        <option>刘备</option>
                        <option>关羽</option>
                        <option>张飞</option>
                        <option>诸葛亮</option>
                    </select>
                </td>

                <td>
                    <input id="left1" type="button" value=">" style="50px"/><br/>
                    <input id="left2" type="button" value=">>" style="50px"/><br/>
                    <input id="left3" type="button" value=">>>" style="50px"/><br/>
                    <input type="button" value="<" style="50px"/><br/>
                    <input type="button" value="<<" style="50px"/><br/>
                    <input type="button" value="<<<" style="50px"/><br/>
                </td>

                <td>
                    <select id="rightSelectId"  style="100px" multiple="multiple" size="10">
                    </select>
                </td>
            </tr>
        </table>    
    </body>
    </html>

    示例动图如下:

    六、jQuery 的筛选

    综述如下:

    jQuery 的选择器可以的完成功能,jQuery 的筛选则提供功能相同的函数。
    例如:
        选择器  :first
        筛选    first()
    二者对比:
    例如:
        $("div:first")      直接获得第一个div,永远只能操作第一个div
        $("div").first()    先获得所有的div,然后从所有的div中筛选出第一个,可以操作第一个div,也可以操作所有div

    6.1、过滤

    详解如下:

    eq(index|-index)    类似 :eq()
        index:正数,从头开始获得指定索引的元素。这个元素的位置是从0算起。即:0表示开始第一个
        -index:负数,从尾开始获得指定索引的元素。从集合中的最后一个元素开始倒数。即:-1表示最后一个
    first()             第一个   类似 :first
    last()              最后一个 类似 :last

    is()                判断,返回的是布尔值
    hasClass(class)     判断是否是指定class。<xxx class="my">  等价于 is("." + class)。返回的是布尔值

    filter()            筛选出与指定表达式匹配的元素集合,从A、B、C中筛选出A、B来
    not()               将指定内容删除,从A、B、C中删除A、B
    -------------------------------------------------------
    has()               是否有子元素
    slice(start, end)   截取元素,[2,4) => 2,3 包前不包后
    map(callback)       将jQuery对象 拆分成 jQuery对象数组,不怎么使用

    示例代码如下:
    01-过滤.html

    <!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>01-筛选-过滤.html</title>

        <!-- 引入jQuery -->
        <script src="../js/jquery-1.8.3.js" type="text/javascript"></script>
        <script src="./script/assist.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="./css/style.css"/>
        <script type="text/javascript">
            $(document).ready(function() {
                // <input type="button" value="选择索引值等于3的div元素" id="btn1"/>
                $("#btn1").click(function() {
                    $("div").eq(3).css("background-color""#ff0");
                    // $("div").eq(-1).css("background-color", "#ff0").show(1000);
                });
                // <input type="button" value="选择第一个div元素" id="btn2"/>
                $("#btn2").click(function() {
                    $("div").first().css("background-color""#f0f");
                });
                // <input type="button" value="选择最后一个div元素" id="btn3"/>
                $("#btn3").click(function() {
                    $("div").last().css("background-color""#f0f").show(1000);
                });

                // <input type="button" value="id=one的div,class是否是one" id="btn4"/>
                $("#btn4").click(function() {
                    alert($("div#one").hasClass("one")); // true
                });

                // <input type="button" value="选择class为none的所有div" id="btn5"/>
                $("#btn5").click(function() {
                    // $("div.none").css("background-color", "#0ff").show(1000);
                    $("div").filter(".none").css("background-color""#0ff").show(1000);
                });
                // <input type="button" value="class为hide的div,下一个兄弟是否是span" id="btn6"/>
                $("#btn6").click(function() {
                    alert($("div.hide").next().is("span")); // true
                });
                // <input type="button" value="选择所有div中含有div的" id="btn7"/>
                $("#btn7").click(function() {
                    $("div").has("div").css("background-color""#00f");
                });
                // <input type="button" value="选择class为one的div,子元素中没有title属性的div" id="btn8"/> 
                // 换句话说:选择class为one的div,然后把有title属性的div过滤掉
                $("#btn8").click(function() {
                    // 练习一:
                    // 选择class为one的div,子元素中没有title属性的div
                    $("div.one").not("[title]").css("background-color""#0f0");

                    // 练习二:
                    // 选择class为one的div,子元素中没有title属性的  父div
                    // $("div.one").children().not("[title]").parent().css("background-color", "#0f0");

                    // 练习三:
                    // 选择class为one的div,子元素中都没有title属性的  父div
                    // 先把 “子元素中都有title属性的  父div” 过滤出来
                    // var $aa = $("div.one").children().filter("[title]").parent();
                    // 再将上面的过滤出来的东西删掉
                    // $("div.one").not($aa).css("background-color", "#0f0");
                });
                // <input type="button" value="选择索引号为3, 4的div" id="btn9"/> // [3, 4) 只有索引3
                $("#btn9").click(function() {
                    $("div").slice(34).css("background-color""#f00");
                });    
            });
        
    </script>
    </head>
    <body>
        <h3>筛选-过滤</h3>
        <button id="reset">手动重置页面元素</button>
        <input type="checkbox" id="isreset" checked="checked"/>
        <label for="isreset">点击下列按钮时先自动重置页面</label>
        <br/>
        <br/>

        <!-- 控制按钮 -->       
        <input type="button" value="选择索引值等于3的div元素" id="btn1"/>
        <input type="button" value="选择第一个div元素" id="btn2"/>
        <input type="button" value="选择最后一个div元素" id="btn3"/>
        <input type="button" value="选择id=one的div,class是否是one" id="btn4"/>
        <input type="button" value="选择class为none的所有div" id="btn5"/>
        <input type="button" value="class为hide的div,下一个兄弟是否是span" id="btn6"/>
        <input type="button" value="选择所有div中含有div的" id="btn7"/>
        <input type="button" value="选择class为one的div,子元素中没有title属性的div" id="btn8"/>
        <input type="button" value="选择索引号为3,4的div" id="btn9"/>

        <br/>
        <br/>

        <!--文本隐藏域-->
        <input type="hidden" value="hidden_1"/> 
        <input type="hidden" value="hidden_2"/> 
        <input type="hidden" value="hidden_3"/>
        <input type="hidden" value="hidden_4"/>

        <!-- 测试的元素 -->
        <div class="one" id="one">
            id为one,class为one的div
            <div class="mini">class为mini</div>
        </div>

        <div class="one" id="two" title="test">
            id为two,class为one,title为test的div
            <div class="mini" title="other">class为mini,title为other</div>
            <div class="mini" title="test">class为mini,title为test</div>
        </div>

        <div class="one">
            class为one
            <div class="mini">class为mini</div>
            <div class="mini">class为mini</div>
            <div class="mini">class为mini</div>
            <div class="mini" title="tesst">class为mini,title为tesst</div>
        </div>

        <div style="display:none;" class="none">style的display为"none"的div</div>

        <div class="hide">class为"hide"的div</div> 

        <span id="mover">正在执行动画的span元素</span>
    </body>
    </html>

    示例动图如下:

    6.2、查找

    详解如下:

    例如:
        <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(prev = previous)
    E.prevAll()         获得前面的所有兄弟。CD

    E.siblings()        获得所有兄弟。CDF(siblings:兄弟姐妹)

    E.parent()          获得父元素(不含自己)。B
    E.parents()         获得所有的父元素(不含自己)。AB
    E.closest(A)        向上获得指定的父元素(含自己),如果获得到了,就返回一个对象;如果没有获得到,就返回空的jQuery对象。
    -------------------------------------------------------
    C.nextUntil(E)      获得后面所有兄弟,直到指定条件位置为止。DE
    F.prevUntil(D)      获得前面所有兄弟,直到指定条件位置为止。DE
    -------------------------------------------------------
    closest和parents的主要区别是:
        1、前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;
        2、前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选择器表达式去过滤;
        3、前者返回0或1个元素,后者可能包含0个,1个,或者多个元素。 

    示例代码如下:
    02-查找.html

    <!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>02-查找.html</title>

        <!-- 引入jQuery --> 
        <script src="../js/jquery-1.8.3.js" type="text/javascript"></script>
        <script src="./script/assist.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="./css/style.css" />   
        <script type="text/javascript">
            $(document).ready(function() {
                // <input type="button" value="选择 id=two 的所有的子元素" id="btn1"/>
                $("#btn1").click(function() {
                    $("#two").children().css("background-color""#ff0");
                    // $("#two").children("[title='test']").css("background-color", "#ff0");
                });
                // <input type="button" value="选择 id=two 的子元素title=test 的元素 " id="btn2"/>
                $("#btn2").click(function() {
                    $("#two").children("[title='test']").css("background-color""#ff0");
                });
                // <input type="button" value="选择 id=two 的下一个兄弟" id="btn3"/>
                $("#btn3").click(function() {
                    $("#two").next().css("background-color""#f0f");
                });
                // <input type="button" value="选择 id=two 的后面的所有兄弟" id="btn4"/>
                $("#btn4").click(function() {
                    $("#two").nextAll().css("background-color""#0ff").show(1000);
                });
                // <input type="button" value="选择 id=two 的上一个兄弟" id="btn5"/>
                $("#btn5").click(function() {
                    $("#two").prev().css("background-color""#00f").show(1000);
                });
                // <input type="button" value="选择 id=two 的前面的所有兄弟" id="btn6"/>
                $("#btn6").click(function() {
                    $("#two").prevAll().css("background-color""#0f0").show(1000);
                });
                // <input type="button" value="选择 id=two 的所有兄弟" id="btn7"/>
                $("#btn7").click(function() {
                    $("#two").siblings().css("background-color""#f0f").show(1000);
                });
                // <input type="button" value="选择 id=two 的父元素" id="btn8"/>
                $("#btn8").click(function() {
                    $("#two").parent().css("background-color""#ff0");
                });
                // <input type="button" value="选择 title='tesst' 的父元素body元素" id="btn9"/>
                $("#btn9").click(function() {
                    $("div[title='tesst']").closest("body").css("background-color""#000");
                });            
            });
        
    </script>
    </head>
    ......

    示例动图如下:

    6.3、串联

    详解如下:

    作用:将多条语句,改成一条。(得瑟代码)

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

    示例代码如下:
    03-串联.html

    <!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>03-串联.html</title>
        <!-- 引入jQuery --> 
        <script src="../js/jquery-1.8.3.js" type="text/javascript"></script>
        <script src="./script/assist.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="./css/style.css"/>   
        <script type="text/javascript">
              $(document).ready(function() {
                // <input type="button" value="选择 id=one和two 的div" id="btn1"/>
                $("#btn1").click(function() {
                    $("#one").add('#two').css("background-color""#ff0");
                });            
                // <input type="button" value="选择id=one 的所有的孩子,以及one自己" id="btn2"/>
                $("#btn2").click(function() {
                    $("#one").children().andSelf().css("background-color""#f0f");
                    // $("#one").children().add("#one").css("background-color", "#f0f");
                });    
                // <input type="button" value="选择id=one 的所有的孩子,设置颜色为红色,设置one自己为黄色" id="btn3"/>
                $("#btn3").click(function() {
                    $("#one").children().css("background-color""#f00").end().css("background-color""#ff0");
                    // $("#one").children().css("background-color", "#f00").parent().css("background-color", "#ff0");
                    // $("#one").css("background-color", "#ff0").children().css("background-color", "#f00");
                });    
                // <input type="button" value="打印id=two 的子节点个数" id="btn4"/>  
                $("#btn4").click(function() {
                    alert($("#two").contents().size());
                    // alert($("#two").contents().length);
                });                
            });
        
    </script>
    </head>
    ......

    示例动图如下:

    6.4、筛选案例

    示例代码如下:
    2.QQ用户分组.html

    <!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>筛选案例-QQ用户分组</title>
        <script type="text/javascript" src="../js/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").show().parent().siblings("div").find("a").hide();
                    $(this).nextAll("a").toggle().parent().siblings("div").find("a").hide();
                });
            });
        
    </script>

        <style type="text/css">
            div * {
                display: block;
                width200px;
            }
            div span {
                background-color#0f0;
            }
        
    </style>
    </head>
    <body>
        <div>
            <span>追求中</span>
            <a>志明</a>
            <a>春娇</a>
        </div>
        <div>
            <span>已交往</span>
            <a>明郎</a>
            <a>娇儿</a>
        </div>
        <div>
            <span>分手了</span>
            <a>张志明</a>
            <a>余春娇</a>
        </div>
    </body>
    </html>

    示例动图如下:

    七、jQuery 的事件

    7.1、常见事件总结

    示例代码如下:
    1.常见事件.html

    <!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>01-常见事件.html</title>
        <style type="text/css">
        #e02 {
            border1px solid #000000;
            height200px;
            width200px;
        }
        
    </style>
        <script type="text/javascript" src="../js/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>

    示例动图如下:

    下面是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 事件。

    示例代码如下:
    2.focus和focusin.html

    <!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>02-focus和focusin的区别.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                // 示例:在js中,focus函数,父元素【不能检测】到子元素是否获得焦点
    //          $("#outerDiv").focus(function() {
    //          alert("outer");
    //          });

                // 示例:在jQuery中,focusin函数, 父元素【可以检测】到子元素获得焦点
                $("#outerDiv").focusin(function() {
                    alert("outer");
                });
            });
        
    </script>
    </head>
    <body>
        <div id="outerDiv" style="border:1px solid #f00;200px;height:200px">
            <div id="innerDiv" style="border:1px solid #00f;100px;height:100px"></div>
        </div>

        <br/>
        <span id="showSpan"></span>
    </body>
    </html>

    示例代码如下:
    3.mouseover和mouseenter.html

    <!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>3-mouseover和mouseenter的区别.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                var i= 0;
                // js代码,当鼠标在父元素和子元素之间穿越时,将会触发父元素的事件
    //          $("#outerDiv").mouseover(function() {
    //              $("#showSpan").html(i++);
    //          });

                // jQuery代码,当鼠标在父元素和子元素之间穿越时,将不会触发父元素的事件
                $("#outerDiv").mouseenter(function() {
                    $("#showSpan").html(i++);
                });
            });
        
    </script>
    </head>
    ......

    示例动图如下:

    7.2、页面载入(加载)

    详解如下:
    方式1:使用标准api

        $(document).ready(function() {
        });
        等效于
        jQuery(document).ready(function() {
        });

    方式1原因图解:

    方式2:简化版

        $(function() {
        });
        等效于
        jQuery(function() {
        });

    方式2原因图解:

    示例代码如下:
    4.ready.html

    <!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>4-ready.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            // jQuery代码的页面加载可以使用多次
            // 因为在jQuery中是队列形式存在的,一个一个的执行
            $(function() {
                alert("O(∩_∩)O哈哈~");
            });

            $(function() {
                alert("O(∩_∩)O哈哈~O(∩_∩)O哈哈~");
            });

            // javaScript代码的页面加载只执行一次,后面的页面加载会覆盖前面的页面加载
            // 因为在js中是先解析完,再加载
            window.onload = function () {
                alert("(*^▽^*)");
            }
            window.onload = function () {
                alert("(*^▽^*)(*^▽^*)");
            }
        
    </script>
    </head>
    <body>

    </body>
    </html>

    7.3、事件绑定

    7.3.1、事件处理

    详解如下:

    bind(type, fn)          给当前对象绑定一个事件。例如:A.bind("click"function() {...});    类似:A.click(function() {...});
    unbind(type)            解绑bind所绑定的事件

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

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

    示例代码如下:
    5.事件处理.html

    <!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>5-事件处理.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(function() {
                // <input id="h01" type="button" value="1、只能点击一次,之后再点击失效"/>
                $("#h01").one("click"function() {
                    alert("你只能爱我一个人!");
                });

                // <input id="h02" type="button" value="2、可以点击多次"/>
                // jQuery 事件的别名,格式:事件.别名
                $("#h02").bind("click.a"function() {
                    alert("你还爱着谁?");
                });
                $("#h02").bind("click.b"function() {
                    alert("你到底还爱着谁??");
                });
                // <input id="h03" type="button" value="3、解绑2中指定的事件"/> 
                $("#h03").click(function() {
                    $("#h02").unbind("click.a"); // 使用jQuery事件的别名解绑想解绑的,因为jQuery事件默认是全解绑
                });

                // <input type="button" value="4、添加一个按钮,样式为myClass,且拥有相同的事件(觉醒血脉)" class="myClass"/>
                $(".myClass").live("click"function() {
                    $("body").append("<input type='button' class='myClass' value='血脉觉醒了'/>")
                });

                // <input id="h05" type="button" value="5、解绑4(灭掉血脉)"/>
                $("#h05").click(function() {
                    $(".myClass").die("click");
                });
            });
        
    </script>
    </head>
    <body>
        <input id="h01" type="button" value="1、只能点击一次,之后再点击失效"/> 
        <input id="h02" type="button" value="2、可以点击多次"/> 
        <input id="h03" type="button" value="3、解绑2中指定的事件"/> 
        <input type="button" value="4、添加一个按钮,样式为myClass,且拥有相同的事件(觉醒血脉)" class="myClass"/> 
        <input id="h05" type="button" value="5、解绑4(灭掉血脉)"/> 
    </body>
    </html>

    示例动图如下:

    7.3.2、事件委派

    详解如下:

    live(type, fn)      绑定事件,之后我们动态添加同样的成员,也具有相同的事件。
    die(type)           解绑事件

    示例代码如下:
      同上7.3.1中的代码
    示例动图如下:
      同上7.3.1中的动图

    7.3.3、事件切换

    详解如下:

    hover(overout)
        鼠标的移入和移出,以前的写法:A.mouseover(fn).mouseout(fn);
        简化版:A.hover(fnfn);
    toggle(fnfnfn, ...);    执行click事件,每点击一次执行一个fn

    示例代码如下:
    6.事件切换.html

    <!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>6-事件切换.html</title>
        <style type="text/css">
            #e02{
                border1px solid #000000;
                  height200px;
                 width200px;
            }
        
    </style>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(function() {
                $("#e01").toggle(function() {
                    alert("O(∩_∩)O哈哈~");
                }, function() {
                    alert("(*^▽^*)嘿嘿-");
                });

                $("#e02").hover(function() {
                    $("#divMsg").html("over");
                }, function() {
                    $("#divMsg").html("out");
                });
            });
        
    </script>
    </head>
    <body>
        <input id="e01" type="button" value="点我啊"/><span id="textMsg"></span><br/>
        <hr/>
        <div id="e02" ></div><span id="divMsg"></span><br/>
    </body>
    </html>

    示例动图如下:

    7.4、事件案例

    示例代码如下:
    1.文字提示.html

    <!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>1-文字提示.html</title>
        <!-- 引入jQuery -->
        <script src="../js/jquery-1.8.3.js" type="text/javascript"></script>

    <style type="text/css">
    body {
        margin0;
        padding40px;
        background#fff;
        font80% Arial, Helvetica, sans-serif;
        color#555;
        line-height180%;
    }

    p {
        clear: both;
        margin0;
        padding: .5em 0;
    }
    /* tooltip */
    #tooltip {
        position: absolute;
        border1px solid #333;
        background#f7f5d1;
        padding1px;
        color#333;
        display: none;
    }
    </style>

        <script type="text/javascript">
            $(function() {
                // 将自定义的提示,替换成自带的提示
                $(".mytooltip").mouseover(function(event{
                    // 1、先创建一个div,自定义的提示
                    var $new = $("<div id='tooltip'></div>");

                    // 获取当前对象绑定的数据
                    var title = $(this).data("mytitle");
                    if (!title) { // 第一次没有数据,就获取自带的提示       
                        // 2、获得自带的提示
                        title = $(this).attr("title");
                        // 将自带的提示移除
                        $(this).removeAttr("title");
                        // 绑定数据(绑定自带的提示)
                        $(this).data("mytitle", title);    
                    }

                    // 2、获得自带的提示
                    // var title = $(this).attr("title");

                    // 将自带的提示移除
                    // $(this).removeAttr("title");

                    // 3、设置提示
                    $new.html(title);

                    // 追加前,先定个位
                    $new.offset({"top" : event.pageY - 20"left" : event.pageX + 5});

                    // 4、将定位后的新的div追加到body内部的后面,并显示自己
                    $new.appendTo("body").show();

                }).mouseout(function() // 鼠标移出删除
                    $("#tooltip").remove();
                }).mousemove(function(event// 鼠标移动跟随
                    $("#tooltip").offset({"top" : event.pageY - 20"left" : event.pageX + 5});
                });
            });
        
    </script>
    </head>
    <body>
        <p>
            <a href="#" class="mytooltip" title="这是我的超链接提示1">提示1</a>
        </p>
        <p>
            <a href="#" class="mytooltip" title="这是我的超链接提示2">提示2</a>
        </p>
        <!-- <div id="tooltip">xxxx</div> -->
    </body>
    </html>

    示例动图如下:

    2.图片提示(扩展).html

    <!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>2-图片提示(扩展).html</title>
        <!-- 引入jQuery -->
        <script src="../js/jquery-1.8.3.js" type="text/javascript"></script>

    <style type="text/css">
    body {
        margin0;
        padding40px;
        background#fff;
        font80% Arial, Helvetica, sans-serif;
        color#555;
        line-height180%;
    }

    img {
        border: none;
    }

    ulli {
        margin0;
        padding0;
    }

    li {
        list-style: none;
        float: left;
        display: inline;
        margin-right10px;
        border1px solid #AAAAAA;
    }

    /* tooltip */
    #tooltip {
        position: absolute;
        border1px solid #ccc;
        background#333;
        padding2px;
        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>

    示例动图如下:

    八、jQuery 的效果|动画

    8.1、基本效果|动画

    详解如下:

    作用:通过改变元素  高度和宽度  进行显示或隐藏

    show(speed, fn)     显示
        参数1:speed 速度。显示的时间,单位:毫秒。也有固定的字符串:("slow""normal"or "fast")
        参数2:fn 回调函数。动画效果完成之后的回调函数。
    hide(speed, fn)     隐藏
    toggle(speed, fn)   切换

    8.2、滑动效果|动画

    详解如下:

    通过改变元素  高度  进行显示或隐藏

    slideDown(speed, fn)    显示
    slideUp(speed, fn)      隐藏
    slideToggle(speed, fn)  切换

    8.3、淡入淡出效果|动画

    详解如下:

    通过改变元素  透明度  进行显示或隐藏

    fadeIn(speed, fn)       显示
    fadeOut(speed, fn)      隐藏
    fadeToggle(speed, fn)   切换
    fadeTo(speed, opacity, fn)      指定透明度
        参数2:opacity 透明度,一个0至1之间表示透明度的数字

    8.4、效果|动画案例

    示例代码如下:
    效果案例.html

    <!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>效果|动画案例.html</title>
    <style type="text/css">
    div {
        border1px solid #000;
        width110px;
        height100px;
    }
    </style>
        <!-- 导入js库 ,注意:使用src属性之后,标签体中不能写入内容-->
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#b1").click(function() {
                    $("#b1Div").toggle("1000");
                });
                $("#b2").click(function() {
                    $("#b2Div").slideToggle("slow");
                });
                $("#b3").click(function() {
                    $("#b3Div").fadeToggle(2000function() {
                        alert("淡入/淡出效果完成了");
                    });
                });
            });
        
    </script>
    </head>
    <body>
        <input type="button" id="b1" value="显示/隐藏 b1Div"/>
        <div id="b1Div"></div>
        <br/>
        <br/>
        <input type="button" id="b2" value="滑出/滑入b2Div"/>
        <div id="b2Div"></div>
        <br/>
        <br/>
        <input type="button" id="b3" value="淡出/淡入b3Div"/>
        <div id="b3Div" style="background-color: red;"></div>
    </body>
    </html>

    示例动图如下:

    九、jQuery 的ajax【掌握】

    • 以前学习的ajax:异步请求,浏览器地址栏不改变,而页面进行局部的刷新。
    • ajax 流程分析图如下:
    • ajax环境搭建:
      • 01、新建首页页面
      • 02、给按钮绑定事件
      • 03、编写servlet
      • 04、未完待续……
    • jQuery 的ajax

      详解如下:
    第一层:$.ajax(...)                     最底层的ajax请求,编写最复杂,完成功能最全的。
    第二层:load()、$.get()、$.post()       开发中常用3个,$符号开头的叫全局函数,不是$开头的是普通函数,普通函数必须使用jQuery对象才能获得
    第三层:$.getJSON()、$.getScript()      高级开发中用的
        $.getJSON()     可以完成js的“跨域”请求。
                        域名:域名+端口+项目,js默认不能跨域请求的(即在A服务器上写了一个程序,在另B服务器上拿不到A服务器的数据)。
                        面试中会问到的:有没有解决js中的跨域问题?
        $.getScript()   动态加载js文件。
                        之前使用标签 <script src="">加载页面时,会一并加载很多js文件,有的js文件我们暂时用不到,导致程序不够优化。
    • 回调函数的参数,一共有三个参数,第一个参数是最重要的
    • 使用JQuery的工具类,解析json
      • jQuery.parseJSON(json)

    9.1、load() 【3】

    示例代码如下:

    <!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>ajax示例</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(function() {
                // 给按钮绑定事件
                $("input").click(function() {
                    // alert("a");
                    // 1.1、确定请求路径
                    var url = "/day41_02_jQuery/SendDataServlet";
                    // 1.2、确定请求参数,采用json
                    var params = {"username":"杰克""password":"1234"};

                    /* 1、load() 普通函数 ,$符号开头的叫全局函数,不是$开头的是普通函数,普通函数必须使用jQuery对象才能获得
                     * * 格式:load(url, [data], [callback])        []中括号表示该项可以省略
                     *      参数1:url,请求路径
                     *      参数2:data,请求参数
                     *      参数3:callback,回调函数
                     *
                     * * 如果没有请求参数,则发送的GET请求
                     * * 如果有请求参数,则发送的POST请求。该POST请求不会出现中文乱码
                     * * 回调函数的参数,一共有三个参数,第一个参数是最重要的,掌握参数1即可
                     *      参数1:data,表示服务器响应的数据。
                     *      load() 该函数永远获得的数据是字符串,如果需要使用该数据,必须将字符串 手动转换成 json对象。
                     */

                     $(this).load(url, params, function() {
                        // load() 该函数永远获得的数据是字符串,如果需要使用该数据,必须将字符串 手动转换成 json对象。
                        var jsonData = eval("(" + data + ")");
                        alert(jsonData.message);
                    });
                });
            });
        
    </script>
    </head>
    <body>
        <input type="button" value="发送ajax"/>
    </body>
    </html>

    9.2、$get() 【2】 

    示例代码如下:

    ......
        <script type="text/javascript">
            $(function() {
                // 给按钮绑定事件
                $("input").click(function() {
                    // alert("a");
                    // 1.1、确定请求路径
                    var url = "/day41_02_jQuery/SendDataServlet";
                    // 1.2、确定请求参数,采用json
                    var params = {"username":"杰克""password":"1234"};

                    /* 2、$.get() 全局函数,作用是:发送get请求
                     * * 格式:jQuery.get(url, [data], [callback], [type])      []中括号表示该项可以省略
                     *      参数1:url,请求路径
                     *      参数2:data,请求参数
                     *      参数3:callback,回调函数
                     *      参数4:type,返回的内容格式:xml, html, script, json, text, _default
                     *
                     * * GET请求不适合发送中文数据,因为请求的存在中文乱码
                     *      所以必须手动解码   new String(username.getBytes("ISO-8859-1"), "UTF-8");
                     *
                     * * 对于响应的数据,如果服务端使用的是:application/json;charset=UTF-8 ,那么jQuery会自动将字符串数据 转换成json对象。
                     * * 对于响应的数据,如果服务端使用的是:text/html;charset=UTF-8 ,那么回调函数获得的是字符串数据,需要手动进行转换。太麻烦,我们可以使用参数4
                     *      如果使用“参数4”,设置"json",则jQuery会将字符串数据 转换成 json对象。
                     */

                    $.get(url, params, function(data{
                        alert(data);
                    }, "json");
                });
            });
        
    </script>
    ......

    9.3、$post() 【1】 

    示例代码如下:

    ......
        <script type="text/javascript">
            $(function() {
                // 给按钮绑定事件
                $("input").click(function() {
                    // alert("a");
                    // 1.1、确定请求路径
                    var url = "/day41_02_jQuery/SendDataServlet";
                    // 1.2、确定请求参数,采用json
                    var params = {"username":"杰克""password":"1234"};

                    /* 3、$.post() 全局函数,作用:发送post请求
                     * * 格式:jQuery.post(url, [data], [callback], [type])
                     *   同上
                     */

                    $.post(url, params, function(data{
                        alert(data);
                    }, "json");
                });
            });
        
    </script>
    ......

    9.4、$ajax() 【4】 

    示例代码如下:

    ......
        <script type="text/javascript">
            $(function() {
                // 给按钮绑定事件
                $("input").click(function() {
                    // alert("a");
                    // 1.1、确定请求路径
                    var url = "/day41_02_jQuery/SendDataServlet";
                    // 1.2、确定请求参数,采用json
                    var params = {"username":"杰克""password":"1234"};

                     /* 4、$.ajax()    底层功能是最强大的,有的公司使用,可以做出更炫的效果
                     * * 格式:jQuery.ajax(url,[settings])
                     * * 常用格式:jQuery.ajax([settings])
                     *      参数settings:设置所有的参数
                     *          url:发送请求的地址
                     *          data:发送到服务器的数据,即请求参数
                     *          type:请求方式 ("POST" 或 "GET")
                     *
                     *          success:请求成功的回调函数,success(data, textStatus, jqXHR)
                     *          error:请求失败时调用此函数
                     *
                     *          dataType:预期服务器返回的数据类型
                     *              "xml": 返回 XML 文档,可用 jQuery 处理。
                     *              "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
                     *              "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。
                     *                  注意:在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
                     *              "json": 返回 JSON 数据 。
                     *              "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
                     *              "text": 返回纯文本字符串
                     */


                    $.ajax({
                        "url":url,
                        "data":params,
                        "type":"POST",
                        "success":function(data{
                            alert(data);
                        },
                        "error":function() {
                            alert("服务器繁忙,请稍后重试");
                        },
                        "dataType":"json",
                    });
                });
            });
        
    </script>
    ......

    9.5、其他--表单序列化

    详解如下:

    serialize()     将表单中所有选中项拼凑成一个字符串
                    类似get请求参数,例如:username=jack&password=1234&gender=man&......

    如下图所示:

    详解如下:

    serializeArray()    将表单中所有选中项拼凑一个json数组

    返回的JSON对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对——name参数和value参数(如果value不为空的话)。
    如下图所示:
    01


    02

    示例代码如下:
    <!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="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                // alert($("form").serialize());
                alert($("form").serializeArray());
            }); 
        
    </script>

        <style type="text/css">
            .textClass {
                background-color#ff0000;
            }
        
    </style>
    </head>
    ......

    十、jQuery 的其他

    10.1、事件冒泡


    event.stopPropagation()
    示例代码如下:
    3.事件冒泡.html
    <!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>3.事件冒泡.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                // 事件冒泡:子元素的事件执行时,会一并触发父元素相同的事件,我们要阻止事件冒泡
                $("#outerDiv").click(function() {
                    alert("outerDiv");
                });
                $("#innerDiv").click(function(event{
                    alert("innerDiv");
                    // 方式1:使用return
                    // return false; // 默认是true
                    // 方式2:通过Event 对象提供的函数 event.stopPropagation() 阻止传播行为
                    event.stopPropagation();
                });
            });
        
    </script>
    </head>
    <body>
        <div id="outerDiv" style="border:1px solid #f00;200px;height:200px">
            <div id="innerDiv" style="border:1px solid #00f;100px;height:100px"></div>
        </div>

        <br/>
        <span id="showSpan"></span>
    </body>
    </html>

    10.2、浏览器默认动作|行为


    event.preventDefault();
    示例代码如下:
    4.浏览器的默认动作.html
    <!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>4.浏览器的默认动作.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                // a标签的默认行为href链接,我们想要阻止它 
                $("a").click(function(event{
                    alert("欢迎来到黑泽明军的博客");
                    // 方式1:
                    return false;
                    // 方式2:
                    event.preventDefault();
                });
            });
        
    </script>
    </head>
    <body>
        <a href="https://www.cnblogs.com/chenmingjun">点我啊</a>
    </body>
    </html>

    十一、ajax案例

    11.1、动态加载1

    示例代码如下:
    动态加载1.html

    <!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>ajax案例-动态加载1.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            // 鼠标往下移,内容就不断的加载
            $(document).ready(function() {
                var num = 1;
                // 1、先创建10个dv
                for (var i = 0; i < 10; i++) {
                    createDiv();
                }

                // 创建div的函数
                function createDiv() {
                    var $div = $("<div class='createDiv'/>");
                    $div.html(num ++);
                    $("body").append($div);
                }

                // 2、给浏览器添加滚动事件
                $(window).scroll(function() {
                    // 2.1、滚过的高度
                    var wt = $(this).scrollTop();
                    // 2.1、整个文档的高度
                    var dh = $(document).height();
                    // 2.1、窗口的高度
                    var wh = $(this).height();

                    // 3、当接近底部时,添加新的div
                    if (wt + wh + 100 > dh) {
                        createDiv();
                        // 发送ajax去填充数据
                        // ......
                    }

                    // 显示数据
                    $("#showDiv").html("wt:" + wt + ", dh:" + dh + ", wh:" + wh);
                });
            });
        
    </script>
        <style>
            .createDiv {
                border1px solid #999;
                width400px;
                height100px;
                margin5px;
                font-size50px;
            }
            #showDiv {
                border1px solid #999;
                width500px;
                height30px;
                position: fixed;
                bottom0;
                right100px;       
            }
        
    </style>
    </head>
    <body>
        <div id="showDiv"></div>
    </body>
    </html>

    示例动图如下:

    11.2、动态加载2

    示例代码如下:
    动态加载2.html

    <!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>ajax案例-抽奖信息显示.html</title>
        <script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                // 1、先创建10个dv
                for (var i = 0; i < 5; i++) {
                    createDiv();
                }

                // 创建div的函数
                function createDiv() {
                    var $div = $("<div class='createDiv'/>");
                    $div.html(i+1);
                    $("body").append($div);
                }

                // 定时器
                setInterval(showDiv, 100);

                function showDiv() {
                    // 第一个div隐藏
                    $("div:first").slideUp(1000function() {
                    // 把自己追加到最后
                    $(this).appendTo("body").slideDown(1000);
                    });
                }
            });
        
    </script>
        <style>
            .createDiv {
                border1px solid #999;
                width400px;
                height100px;
                margin5px;
                font-size50px;
            }
        
    </style>
    </head>
    <body>

    </body>
    </html>

    示例动图如下:

  • 相关阅读:
    JavaScript高级程序设计-(3) 变量、作用域和内存问题
    JavaScript高级程序设计-(2)基础概念
    JavaScript高级程序设计-(1)html中使用JavaScript
    ASP.NET 一句代码实现批量数据绑定
    C#改善程序的50种方法
    ASP.NET探讨:技术的学习顺序问题
    docker 操作命令
    友盟分享 | 移动大数据平台架构思想以及实践经验
    [MapReduce_3] MapReduce 程序运行流程解析
    [MapReduce_add_3] MapReduce 通过分区解决数据倾斜
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9603682.html
Copyright © 2011-2022 走看看