jQuery:一些小练习

 

练习1:点击所有的 p 节点,能够弹出对应的文本内容。

1         <script type="text/javascript" src="jquery-1.7.2.js"></script>
2         <script type="text/javascript">
3             $(function(){
4                 $("p").click(function(){
5                     alert($(this).text());
6                 });
7             });
8         </script>

  注意:1、jQuery 对象可以进行隐式迭代: 为选取的所有的 p 节点都添加了 onclick 响应函数。jQuery 对象本身就是一个 DOM 对象的数组。

     2、在响应函数中,this 是一个 DOM 对象,若想使用 jQUery 对象的方法,需要把其包装为 jQuery 对象:使用 $() 把 this 包起来。

     3、text() 方法是一个读写的方法:不加任何参数,读取文本值;加参数为属性节点添加文本值(文本节点),和 text() 类似的方法: attr()、val()。

练习2:使第一个 table 隔行变色。

  $("table:first tr:even").css("background", "#ffaabb");

练习3:点击 button ,弹出被选中的个数。

 1         <script type="text/javascript" src="jquery-1.7.2.js"></script>
 2         <script type="text/javascript">
 3             $(function(){
 4                 $("button").click(function(){
 5                     alert($(":checkbox:checked").length);
 6                 });
 7             });
 8         </script>
 9 ...
10 
11   <body>
12       <input type="checkbox" name="test" />
13         <input type="checkbox" name="test" />
14         <input type="checkbox" name="test" />
15         <input type="checkbox" name="test" />
16         <input type="checkbox" name="test" />
17         <input type="checkbox" name="test" />
18         <button>您选中的个数</button>
19   </body>

 

练习4:分类添加内容

结果图:

  、 

代码:

 1 <title>Insert title here</title>
 2     <script type="text/javascript" src="jquery-1.7.2.js"></script>
 3     <script type="text/javascript">
 4         $(function(){
 5             //需求2:使包括新增的 li 都能响应 onclick 事件: 弹出 li 的文本值.   
 6             function showContent(li){
 7                 alert($(li).text());
 8             }
 9             $("li").click(function(){
10                 showContent(this)
11             });
12             
13             //需求1:点击 submit 按钮时,检查是否选择 type,若没有选择给出提示: "请选择类型"; 
14             $(":submit").click(function(){
15                 var $type = $(":radio[name='type']:checked");
16                 if($type.length == 0 ){
17                     alert("请选择类型");
18                     return false;
19                 }
20                 var typeVal = $type.val();
21                 //检查文本框中是否有输入(可以去除前后空格),若没有输入,则给出提示:"请输入内容";
22                 var $text = $(":text[name='name']");
23                 var textVal = $.trim($text.val());
24                 $text.val(textVal);
25                 if(textVal == ""){
26                     alert("请输入内容");
27                     return false;
28                 }
29                 //alert("^^" + textVal + "__");
30                 //若检查都通过, 则在相应的 ul 节点中添加对应的 li 节点 
31                 $("<li>" + textVal + "</li>").appendTo($("#" + typeVal))
32                                              .click(function(){
33                                                  showContent(this)
34                                              });
35                 $text.val("");
36                 return false;
37             });
38         })
39     </script>
40 </head>
41 <body>
42 
43     <p>你喜欢哪个城市?</p>
44     
45         <ul id="city">
46             <li id="bj">北京</li>
47             <li>上海</li>
48             <li>东京</li>
49             <li>首尔</li>
50         </ul>
51         
52         <br><br>
53         <p>你喜欢哪款单机游戏?</p>
54         <ul id="game">
55             <li id="rl">红警</li>
56             <li>实况</li>
57             <li>极品飞车</li>
58             <li>魔兽</li>
59         </ul>        
60         <br><br>        
61         <form action="dom-7.html" name="myform">
62             
63             <input type="radio" name="type" value="city">城市
64             <input type="radio" name="type" value="game">游戏
65         
66             name: <input type="text" name="name"/>
67         
68             <input type="submit" value="Submit" id="submit"/>
69             
70         </form>
71 </body>

  注意:1、$.trim(str):可以去除 str 的前后空格。

     2、同 JS 的响应函数一样,jQuery 对象的响应函数若返回 false,可以取消指定元素的默认行为,比如:submit、a 等。

     3、jQuery 对象的方法的连缀:调用一个方法的返回值还是调用的对象,于是可以在调用方法的后面依然调用先前那个对象的其他方法。

 

 练习5:员工信息的增加和删除

结果图:

代码:

 1 <script type="text/javascript" src="jquery-1.7.2.js"></script>
 2 <script type="text/javascript">
 3  
 4  $(function(){
 5      
 6      //1. jQuery 对象调用 jQuery 提供的方法的返回值如果是一个对象的话
 7      //那么这个对象一定是一个 jQuery 对象
 8      //2. find() 方法: 查找子节点, 返回值为子节点对应的 jQuery 对象
 9      function removeTr(aNoe){
10          //获取 a 节点所在的的 tr 节点. 返回时是 jQuery 对象
11          var $trNode = $(aNoe).parent().parent();
12          var textContent = $trNode.find("td:first").text();
13          textContent = $.trim(textContent);
14          
15          var flag = confirm("确定要删除" + textContent + "的信息吗?");
16          if(flag){
17              $trNode.remove();
18          }
19          
20          return false;
21      }
22      
23      $("#employeetable a").click(function(){
24          return removeTr(this);
25      });
26      //给 submit 添加 onclick 响应事件,添加信息到  #employeetable tbody 中。 
27      $("#addEmpButton").click(function(){
28          $("<tr></tr>").append("<td>" + $("#name").val() + "</td>")
29                        .append("<td>" + $("#email").val() + "</td>")
30                        .append("<td>" + $("#salary").val() + "</td>")
31                        .append("<td><a href='deleteEmp?id=xxx'>Delete</a></td>")
32                        .appendTo("#employeetable tbody")
33                        .find("a")
34                            .click(function(){
35                                return removeTr(this)
36                            });
37          //添加完信息后,将 text 里的值置空。 
38          $("#name").val("");
39          $("#email").val("");
40          $("#salary").val("");
41      });     
42  })
43      
44 
45 </script>
46 </head>
47 <body>
48 
49     <center>
50         <br> <br> 添加新员工 <br> <br> name: <input type="text"
51             name="name" id="name" />&nbsp;&nbsp; email: <input type="text"
52             name="email" id="email" />&nbsp;&nbsp; salary: <input type="text"
53             name="salary" id="salary" /> <br> <br>
54         <button id="addEmpButton" value="abc">Submit</button>
55         <br> <br>
56         <hr>
57         <br> <br>
58         <table id="employeetable" border="1" cellpadding="5" cellspacing=0>
59             <tbody>
60                 <tr>
61                     <th>Name</th>
62                     <th>Email</th>
63                     <th>Salary</th>
64                     <th>&nbsp;</th>
65                 </tr>
66                 <tr>
67                     <td>Tom</td>
68                     <td>tom@tom.com</td>
69                     <td>5000</td>
70                     <td><a href="deleteEmp?id=001">Delete</a></td>
71                 </tr>
72                 <tr>
73                     <td>
74                         Jerry
75                     </td>
76                     <td>jerry@sohu.com</td>
77                     <td>8000</td>
78                     <td><a href="deleteEmp?id=002">Delete</a></td>
79                 </tr>
80                 <tr>
81                     <td>Bob</td>
82                     <td>bob@tom.com</td>
83                     <td>10000</td>
84                     <td><a href="deleteEmp?id=003">Delete</a></td>
85                 </tr>
86             </tbody>
87         </table>
88     </center>
89 
90 </body>

  注意:1、jQuery 对象 调用 jQuery 提供的方法的返回值,如果是一个对象的话,那么这个对象一定是一个 jQuery 对象。

     2、找第一个 td 子节点的文本值,find() 方法:查找子节点,返回值为子节点对应的 jQuery 对象。

 

 练习六:品牌展示

结果图:

    、   

代码:

 1         <script type="text/javascript" src="scripts/jquery-1.3.1.js"></script>
 2         <script type="text/javascript">
 3             /*
 4             var $category = $("li:gt(5):lt(10)");
 5             此时的 lt 是在 li:gt(5) 基础上进行的. 
 6             */
 7             $(function(){
 8                 //1. 需要选择从 "富士" - "爱国者" 的所有 li: $category
 9                 //var $category = $("li:gt(5):lt(6)"); lt是在gt 的基础上 选择,所以是6,不是10. 
10                 //或者这么写
11                 var $category = $("li:gt(5):not(:last)");
12                 
13                 //2. 把他们隐藏. 
14                 $category.hide();
15                 
16                 //3. 为 .showmore 添加一个 onclick 响应函数(取消默认行为)
17                 $(".showmore").click(function(){
18                     //4. 若 $category 是隐藏的. 使用 is
19                     if($category.is(":hidden")){
20                         //4.1 $category 显示
21                         $category.show();
22                         
23                         //4.2 使 "佳能", "尼康", "奥林巴斯" 变为高亮显示: 
24                         //添加 .promoted 的 class
25                         $("li:contains('佳能'), li:contains('尼康'), li:contains('奥林巴斯')").addClass("promoted");
26                         
27                         //4.3 .showmore > a > span 的文字变为: 显示精简品牌
28                         $(".showmore>a>span").text("显示精简品牌"); 
29                         
30                         //4.4 .showmore > a > span 的 background 变为: 
31                         //url(img/up.gif) no-repeat 0 0
32                         $(".showmore>a>span").css("background", "url(img/up.gif) no-repeat 0 0");
33                         
34                         return false;
35                     }else{
36                         //5. 若 $category 是显示的. 
37                         $category.hide();
38                         $("li").removeClass("promoted");
39                         $(".showmore>a>span").text("显示全部品牌");
40                         $(".showmore>a>span").css("background", "url(img/down.gif) no-repeat 0 0");
41                         return false;
42                     }
43                 });        
44             })
45         </script>
46     </head>
47     <body>
48         <div class="SubCategoryBox">
49             <ul>
50                 <li ><a href="#">佳能</a><i>(30440) </i></li>
51                 <li ><a href="#">索尼</a><i>(27220) </i></li>
52                 <li ><a href="#">三星</a><i>(20808) </i></li>
53                 <li ><a href="#">尼康</a><i>(17821) </i></li>
54                 <li ><a href="#">松下</a><i>(12289) </i></li>
55                 <li ><a href="#">卡西欧</a><i>(8242) </i></li>
56                 <li ><a href="#">富士</a><i>(14894) </i></li>
57                 <li ><a href="#">柯达</a><i>(9520) </i></li>
58                 <li ><a href="#">宾得</a><i>(2195) </i></li>
59                 <li ><a href="#">理光</a><i>(4114) </i></li>
60                 <li ><a href="#">奥林巴斯</a><i>(12205) </i></li>
61                 <li ><a href="#">明基</a><i>(1466) </i></li>
62                 <li ><a href="#">爱国者</a><i>(3091) </i></li>
63                 <li ><a href="#">其它品牌相机</a><i>(7275) </i></li>
64             </ul>
65             <div class="showmore">
66                 <a href="more.html"><span>显示全部品牌</span></a>
67             </div>
68         </div>
69     </body>

 

over。

 

posted @ 2017-01-25 22:58  稻小白  阅读(8943)  评论(0编辑  收藏  举报