jQuery节点操作练习

练习1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Untitled Document</title>
        <script type="text/javascript" src="scripts/jquery-1.7.2.js"></script>
        <script type="text/javascript">
            $(function(){
                //1. 点击所有的 p 节点, 能够弹出其对应的文本内容
                /*
                1. jQuery 对象可以进行隐式迭代: $("p").click(function(){...});
                为选取的所有的 p 节点都添加了 click 响应函数. jQuery 对象本身就是一个 
                DOM 对象的数组
                2. 在响应函数中, this 是一个 DOM 对象. 若想使用 jQuery 对象的方法
                需要把其包装为 jQuery 对象: 使用 $() 把 this 包起来. 
                3. text() 方法时一个读写的方法: 不加任何参数, 读取文本值; 加参数为
                属性节点添加文本值(文本节点) (和 text() 类似的方法: attr(), val())
                */
                $("p").click(function(){
                    alert($(this).text());
                    $(this).text("^^" + $(this).text());
                    //alert(this.firstChild.nodeValue);
                });

                //2. 使第一个 table 隔行变色
                $("table:first tr:even").css("background", "#ffaacc");

                //3. 点击 button, 弹出 checkbox 被选中的个数
                $("button").click(function(){
                    alert($(":checkbox:checked").length);
                });
            });
        </script>
    </head>
    <body>
        <p>段落1</p>
        <p>段落2</p>
        <p>段落3</p>

        <table>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
        </table>
        <br>
        <hr>
        <br>
        <table>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
            <tr>
                <td>第一行</td><td>第一行</td>
            </tr>
        </table>

        <input type="checkbox" name="test" />
        <input type="checkbox" name="test" />
        <input type="checkbox" name="test" />
        <input type="checkbox" name="test" />
        <input type="checkbox" name="test" />
        <input type="checkbox" name="test" />
        <button>您选中的个数</button>
    </body>
</html>
练习2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Untitled Document</title>
        <script type="text/javascript" src="scripts/jquery-1.7.2.js"></script>
        <script type="text/javascript">

            $(function(){
                //1. 为 #address 添加 focus(获取焦点), blur(失去焦点) 响应函数
                $(":text").focus(function(){
                    //2. 当获取焦点时, 若 #address 中是默认值
                    //(defaultValue 属性, 该属性是 DOM 对象的属性), 就使其值置为 ""
                    var val = $(this).val();

                    if(val == this.defaultValue){
                        $(this).val("");
                    }
                }).blur(function(){
                    //3. 失去焦点是, 若 #address 的值在去除前后空格后等于 ""
                    //则为其恢复默认值. 
                    var val = this.value;   
                    if($.trim(val) == ""){
                        this.value = this.defaultValue;
                    }
                });

                //2. 
                $(":button:eq(1)").click(function(){
                    $("#single").val("选择3号");
                });

                $(":button:eq(2)").click(function(){
                    $("#multiple").val(["选择2号", "选择4号"]);              
                });

                $(":button:eq(3)").click(function(){
                    $(":checkbox[name='c']").val(["check2", "check4"]);
                });

                $(":button:eq(4)").click(function(){
                    //即便是为一组 radio 赋值, val 参数中也应该使用数组. 
                    //使用一个值不起作用。 
                    $(":radio[name='r']").val(["radio2"]);
                });

                $(":button:eq(5)").click(function(){
                    //val() 可以直接获取 select 的被选择的值. 
                    alert($("#single").val());
                    alert($("#multiple").val());

                    //val 不能直接获取 checkbox 被选择的值
                    //若直接获取, 只能得到第一个被选择的值. 
                    //因为 $(":checkbox[name='c']:checked") 得到的是一个
                    //数组. 而使用 val() 方法只能获取数组元素的第一个值
                    //若希望打印被选择的所有制, 需要使用 each 遍历. 
                    //alert($(":checkbox[name='c']:checked").val());
                    $(":checkbox[name='c']:checked").each(function(){
                        alert(this.value);
                    });

                    //而 raido 被选择的只有一个, 所以可以直接使用 val() 方法. 
                    alert($(":radio[name='r']:checked").val());
                });

            })

        </script>
    </head>
    <body>
        <input type="text" id="address" value="请输入邮箱地址"><br>
        <input type="text" id="password" value="请输入邮箱密码"><br>
        <input type="button" value="登录">

        <br><br><br>

        <input type="button" value="使单选下拉框的'选择3号'被选中"/>
        <input type="button" value="使多选下拉框选中的'选择2号'和'选择4号'被选中"/><br>
        <input type="button" value="使多选框的'多选2'和'多选4'被选中"/>
        <input type="button" value="使单选框的'单选2'被选中"/><br>
        <input type="button" value="打印已经被选中的值"><br>

        <br/>

        <select id="single">
          <option>选择1号</option>
          <option>选择2号</option>
          <option>选择3号</option>
        </select>

        <select id="multiple" multiple="multiple" style="height:120px;">
          <option selected="selected">选择1号</option>
          <option>选择2号</option>
          <option>选择3号</option>
          <option>选择4号</option>
          <option selected="selected">选择5号</option>
        </select>

        <br/><br/>

        <input type="checkbox" name="c" value="check1"/> 多选1
        <input type="checkbox" name="c" value="check2"/> 多选2
        <input type="checkbox" name="c" value="check3"/> 多选3
        <input type="checkbox" name="c" value="check4"/> 多选4

        <br/>

        <input type="radio" name="r" value="radio1"/> 单选1
        <input type="radio" name="r"  value="radio2"/> 单选2
        <input type="radio" name="r"  value="radio3"/> 单选3

    </body>
</html>
练习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>Insert title here</title>
    <script type="text/javascript" src="scripts/jquery-1.7.2.js"></script>
    <script type="text/javascript">

        //需求: 点击 submit 按钮时, 检查是否选择 type, 若没有选择给出提示: "请选择类型"; 
        //     检查文本框中是否有输入(可以去除前后空格), 若没有输入,则给出提示: "请输入内容";
        //若检查都通过, 则在相应的 ul 节点中添加对应的 li 节点 

        //需求2: 使包括新增的 li 都能响应 onclick 事件: 弹出 li 的文本值. 

        $(function(){

            function showContent(li){
                alert($(li).text());
            }

            $("li").click(function(){
                showContent(this);
            });

            //1. 同 JS 的响应函数一样, jQuery 对象的响应函数若返回 false, 
            //可以取消指定元素的默认行为. 比如 submit, a 等
            //2. val() 方法, 相当于 attr("value"), 获取表单元素的 value 属性值. 
            //3. $.trim(str): 可以去除 str 的前后空格.
            //4. jQuery 对象的方法的连缀: 调用一个方法的返回值还是调用的对象, 于是可以
            //在调用方法的后面依然调用先前的那个对象的其他方法. 
            $(":submit").click(function(){

                var $type = $(":radio[name='type']:checked");
                if($type.length == 0){
                    alert("请选择类型.");
                    return false;
                }

                var type = $type.val();

                var $name = $(":text[name='name']");
                var name = $name.val();

                //$.trim(str): 可以去除 str 的前后空格.
                name = $.trim(name);
                $name.val(name);

                if(name == ""){
                    alert("请输入内容");
                    return false;
                }

                $("<li>" + name + "</li>").appendTo($("#" + type))
                                          .click(function(){
                                              showContent(this);
                                          });

                //取消 submit 的默认行为
                return false;
            });

        })


    </script>
</head>
<body>

    <p>你喜欢哪个城市?</p>

        <ul id="city">
            <li id="bj">北京</li>
            <li>上海</li>
            <li>东京</li>
            <li>首尔</li>
        </ul>

        <br><br>
        <p>你喜欢哪款单机游戏?</p>
        <ul id="game">
            <li id="rl">红警</li>
            <li>实况</li>
            <li>极品飞车</li>
            <li>魔兽</li>
        </ul>

        <br><br>

        <form action="dom-7.html" name="myform">

            <input type="radio" name="type" value="city">城市
            <input type="radio" name="type" value="game">游戏

            name: <input type="text" name="name"/>

            <input type="submit" value="Submit" id="submit"/>

        </form>


</body>
</html>
练习4
<!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="scripts/jquery-1.7.2.js"></script>
<script type="text/javascript">

 $(function(){

     //1. jQuery 对象调用 jQuery 提供的方法的返回值如果是一个对象的话
     //那么这个对象一定是一个 jQuery 对象
     //2. find() 方法: 查找子节点, 返回值为子节点对应的 jQuery 对象
     function removeTr(aNoe){
         //获取 a 节点所在的的 tr 节点. 返回时是 jQuery 对象
         var $trNode = $(aNoe).parent().parent();
         var textContent = $trNode.find("td:first").text();
         textContent = $.trim(textContent);

         var flag = confirm("确定要删除" + textContent + "的信息吗?");
         if(flag){
             $trNode.remove();
         }

         return false;
     }

     $("#employeetable a").click(function(){
         return removeTr(this);
     });

     $("#addEmpButton").click(function(){
         $("<tr></tr>").append("<td>" + $("#name").val() + "</td>")
                       .append("<td>" + $("#email").val() + "</td>")
                       .append("<td>" + $("#salary").val() + "</td>")
                       .append("<td><a href='deleteEmp?id=xxx'>Delete</a></td>")
                       .appendTo("#employeetable tbody")
                       .find("a")
                           .click(function(){
                               return removeTr(this)
                           });
     });

 })


</script>
</head>
<body>

    <center>
        <br> <br> 添加新员工 <br> <br> name: <input type="text"
            name="name" id="name" />&nbsp;&nbsp; email: <input type="text"
            name="email" id="email" />&nbsp;&nbsp; salary: <input type="text"
            name="salary" id="salary" /> <br> <br>
        <button id="addEmpButton" value="abc">Submit</button>
        <br> <br>
        <hr>
        <br> <br>
        <table id="employeetable" border="1" cellpadding="5" cellspacing=0>
            <tbody>
                <tr>
                    <th>Name</th>
                    <th>Email</th>
                    <th>Salary</th>
                    <th>&nbsp;</th>
                </tr>
                <tr>
                    <td>Tom</td>
                    <td>tom@tom.com</td>
                    <td>5000</td>
                    <td><a href="deleteEmp?id=001">Delete</a></td>
                </tr>
                <tr>
                    <td>
                        Jerry
                    </td>
                    <td>jerry@sohu.com</td>
                    <td>8000</td>
                    <td><a href="deleteEmp?id=002">Delete</a></td>
                </tr>
                <tr>
                    <td>Bob</td>
                    <td>bob@tom.com</td>
                    <td>10000</td>
                    <td><a href="deleteEmp?id=003">Delete</a></td>
                </tr>
            </tbody>
        </table>
    </center>

</body>
</html>
练习五 引入css
    <script>
            //1.页面加载
            $(function(){
                /*//2.获取tbody下面的偶数行并设置背景颜色
                $("tbody tr:even").css("background-color","yellow");
                //3.获取tbody下面的奇数行并设置背景颜色
                $("tbody tr:odd").css("background-color","green");*/

                //2.获取tbody下面的偶数行并设置背景颜色
                $("tbody tr:even").addClass("even");
                //$("tbody tr:even").removeClass("even");
                //3.获取tbody下面的奇数行并设置背景颜色
                $("tbody tr:odd").addClass("odd");
            });
        </script>
.even       { background:#FFF38F;}  /* 偶数行样式*/
.odd        { background:#FFFFEE;}  /* 奇数行样式*/
练习六 全选不选
        <script>
            $(function(){
                $("#select").click(function(){
                    //获取下面所有的 复选框并将其选中状态设置跟编码的前端 复选框保持一致。
                    //attr方法与JQ的版本有关,在1.8.3及以下有效。
                    //$("tbody input").attr("checked",this.checked);
                    $("tbody input").prop("checked",this.checked);
                });
            });
        </script>
练习七 图片定时弹出消失
<script>
            $(function(){
                //1.书写显示广告图片的定时操作
                time = setInterval("showAd()",3000);
            });

            //2.书写显示广告图片的函数
            function showAd(){
                //3.获取广告图片,并让其显示
                //$("#img2").show(1000);
                //$("#img2").slideDown(5000);
                $("#img2").fadeIn(4000);
                //4.清除显示图片定时操作
                clearInterval(time);
                //5.设置隐藏图片的定时操作
                time = setInterval("hiddenAd()",3000);
            }

            function hiddenAd(){
                //6.获取广告图片,并让其隐藏
                //$("#img2").hide();
                //$("#img2").slideUp(5000);
                $("#img2").fadeOut(6000);
                //7.清除隐藏图片的定时操作
                clearInterval(time);
            }
        </script>
练习八 省级联动
        <td>
                                <!--2.确定事件,通过函数传参的方式拿到改变后的城市-->
                                <select id="province">
                                    <option>--请选择--</option>
                                    <option value="0">湖北</option>
                                    <option value="1">湖南</option>
                                    <option value="2">河北</option>
                                    <option value="3">河南</option>
                                </select>
                                <select id="city">

                                </select>
                            </td>
<script type="text/javascript" src="../js/jquery-1.8.3.js" ></script>
        <script>
            $(function(){
                //2.创建二维数组用于存储省份和城市
                var cities = new Array(3);
                cities[0] = new Array("武汉市","黄冈市","襄阳市","荆州市");
                cities[1] = new Array("长沙市","郴州市","株洲市","岳阳市");
                cities[2] = new Array("石家庄市","邯郸市","廊坊市","保定市");
                cities[3] = new Array("郑州市","洛阳市","开封市","安阳市");

                $("#province").change(function(){
                    //10.清除第二个下拉列表的内容
                    $("#city").empty();

                    //1.获取用户选择的省份
                    var val = this.value;
                    //alert(val);
                    //3.遍历二维数组中的省份
                    $.each(cities,function(i,n){
                        alert(i+":"+n);
                        //4.判断用户选择的省份和遍历的省份
                        if(val==i){
                            //5.遍历该省份下的所有城市
                            $.each(cities[i], function(j,m) {
                                //alert(m);
                                //输出:武汉市,黄冈市,襄阳市,荆州市
                                //6.创建城市文本节点
                                var textNode = document.createTextNode(m);
                                //7.创建option元素节点
                                var opEle = document.createElement("option");
                                //8.将城市文本节点添加到option元素节点中去
                                $(opEle).append(textNode);
                                //9.将option元素节点追加到第二个下拉列表中去
                                $(opEle).appendTo($("#city"));
                            });
                        }
                    });

                });
            });
        </script>
(答案见下载资源) 上机任务1 用chrome打开dom.sample2.html页面, 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (1)查找id号为tigerLily的元素 (2)查找拥有类myList的元素 (3)查找所有的input元素 (4)查找所有img元素和tr元素 (5)查找id号为coffeePot和id号为someDiv的元素 (6)选择具有id属性的所有元素 (7)选择具有id属性的input元素 (8)选择其value属性等于A的元素 (9)选择其value属性等于A或等于C的元素 (10)选择其title属性值中含有dog的img元素 (11)选择其href属性值以http开头的a元素 (12)选择div元素内嵌套的span元素 上机任务2 用chrome打开dom.sample2.html页面, 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (13)选择元素li,该元素作为拥有myList类的ul元素的直接子元素 (14)选择id号为radioA的input元素后面的第一个input兄弟元素 (15)选择id号为radioA的input元素后面的所有input兄弟元素 (16)选择dom sample页面中第3个tr元素 (17)选择其type属性值checkbox且索引为偶数的input元素 (18)选择非最后一行的tr元素 (19)选择所有的checkbox元素 (20)选择所有被选中的表单元素 (21)选择含有1972的td元素 (22)选择包含有sapn元素的div元素 (23)选择表格中每行的第一个单元格和最后一个单元格 (24)选择表格中第3行,标题行不算(要求用nth-child()过滤器) 上机任务3 用chrome打开dom.sample2.html页面,该页面中内嵌有几个CSS类:.red .green .blue .yellow .thickBorder .seeThrough 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (1)将拥有alt属性的倒数第二个图片元素应用yellow类 (2)将第一个checkbox表单元素应用.green样式 (3)求id值为checkbox3的元素在所有表单元素里的顺序号 (4)用一条链式语句完成:先对所有img元素应用seeThrough样式,再为所有img元素和tr元素应用yellow样式 (5)用filter方法实现:选择单元格内容为Java或Smalltalk的单元格 (6)取图片集中的第2,3,4张图片 (7)用has方法实现:选择那些包含有ul元素的li元素 (8)将tbody每个单元格里的文字设为:我爱jQuery (9)查找form元素的后代元素中标签为label的元素 (10)查找表单元素中是否有id值为checkbox5的元素 提示: 为某dom元素应用某css样式可以使用jQuery中的addClass方法,例如:将id为tt的div元素应用.bt样式,可用些语句:$("#tt").addClass("color","red");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值