黑马程序员技术交流社区

标题: 【济南中心】JavaEE就业班同步笔记第一阶段:JavaWeb之JQuery [打印本页]

作者: 小鲁哥哥    时间: 2016-12-3 22:41
标题: 【济南中心】JavaEE就业班同步笔记第一阶段:JavaWeb之JQuery
本帖最后由 小鲁哥哥 于 2017-1-4 21:13 编辑


【济南中心】JavaEE就业班同步笔记第一阶段:
JavaWeb之前端技术--JQuery

1        使用JQuery完成定时弹出广告:
1.1        需求:
之前使用的JS的方式完成定时弹出广告,现在使用JQuery完成同样的效果:

1.2.        分析
1.2.1        技术分析:
【JQuery的概述】

JQuery是一个JS的框架(JS的类库).对传统的JS进行了封装.
现在企业的开发中往往不会使用传统的JS进行开发,通常都会使用JS框架进行开发.

JQuery,ExtJS,DWR,Prototype...

学习JQuery的语法.
【JQuery的入门】

<script src="../../js/jquery-1.11.3.min.js"></script>

                        
[JavaScript] 纯文本查看 复制代码
// 传统的JS的方式:页面加载的事件只能执行一次.
                        /*window.onload = function(){
                                alert("aaa");
                        }                        
                        window.onload = function(){
                                alert("bbb");
                        }*/                        
                        // JQuery的方式:相当于页面加载的事件,可以执行多次.效率比window.onload要高.
                        // window.onload 等页面加载完成后执行该方法.
                        // $(function(){}):等页面的DOM树绘制完成后进行执行.
                        // $相当于JQuery
                        $(function(){
                                alert("aaa");
                        });                        
                        $(function(){
                                alert("bbb");
                        });
【JS对象和JQ对象的转换】
                        
[JavaScript] 纯文本查看 复制代码
window.onload = function(){
                                // 传统JS方式:
                                var d1 = document.getElementById("d1");
                                // JS对象的属性和方法:
                                // d1.innerHTML = "JS对象的属性";
                                // d1.html("aaaaaa");
                                // 将JS对象转成JQ的对象.
                                $(d1).html("JS对象转成JQ对象");
                        }


            
[JavaScript] 纯文本查看 复制代码
 $(function(){
                                var $d1 = $("#d1");
                                // $d1.html("JQ对象的属性");
                                // 转成JS的对象:
                                // 一种方式
                                // $d1[0].innerHTML = "将JQ的对象转成JS对象";
                                // 二种方式:
                                $d1.get(0).innerHTML = "将JQ的对象转成JS对象的方式二";
                        });
【JQ显示和隐藏】

* show();
    * 使用一:Jq对象.show();
    * 使用二:Jq对象.show(“slow”); // slow,normal,fast
    * 使用三:Jq对象.show(毫秒值); // 1000
    * 使用四:Jq对象.show(毫秒值,function(){});


* hide();
    * 使用一:Jq对象.hide();
    * 使用二:Jq对象.hide(“slow”); // slow,normal,fast
    * 使用三:Jq对象.hide(毫秒值); // 1000
    * 使用四:Jq对象.hide(毫秒值,function(){});


* slideDown();        --向下滑动
    * 使用一:Jq对象.slideDown();
    * 使用二:Jq对象.slideDown(“slow”); // slow,normal,fast
    * 使用三:Jq对象.slideDown(毫秒值); // 1000
    * 使用四:Jq对象.slideDown(毫秒值,function(){});


* slideUp();        --向上滑动
    * 使用一:Jq对象.slideUp();
    * 使用二:Jq对象.slideUp(“slow”); // slow,normal,fast
    * 使用三:Jq对象.slideUp(毫秒值); // 1000
    * 使用四:Jq对象.slideUp(毫秒值,function(){});


* fadeIn();                --淡入
    * 使用一:Jq对象.fadeIn();
    * 使用二:Jq对象.fadeIn(“slow”); // slow,normal,fast
    * 使用三:Jq对象.fadeIn(毫秒值); // 1000
    * 使用四:Jq对象.fadeIn(毫秒值,function(){});


* fadeOut();        --淡出
    * 使用一:Jq对象.fadeOut();
    * 使用二:Jq对象.fadeOut(“slow”); // slow,normal,fast
    * 使用三:Jq对象.fadeOut(毫秒值); // 1000
    * 使用四:Jq对象.fadeOut(毫秒值,function(){});


* animate();        --自定义动画
* toggle();                --单击切换函数
    * Jq对象.toggle(fn1,fn2...);单击第一下的时候执行fn1,单击第二下执行fn2...
1.2.2        步骤分析:
【步骤一】:创建一个HTML的页面.
【步骤二】:在页面中创建一个广告部分的DIV,并且设置DIV是隐藏的.
【步骤三】:设置定时操作,5秒钟执行一个显示的方法.
【步骤四】:在设置一个定时,5秒钟执行一个隐藏的方法.
1.3        代码实现
               
[JavaScript] 纯文本查看 复制代码
<script>
                        var time ;
                        $(function(){
                                // 设置定时 5秒钟执行一个 显示广告的方法:
                                time = setInterval("showAd()",5000);
                        });
                        
                        function showAd(){
                                // 获得元素:
                                //$("#adDiv").show(2000);
                                // $("#adDiv").slideDown(2000);
                                $("#adDiv").fadeIn(3000);
                                clearInterval(time);
                                // 再设置定时 5秒钟隐藏.
                                time = setInterval("hideAd()",5000);
                        }
                        
                        function hideAd(){
                                //$("#adDiv").hide(2000);
                                // $("#adDiv").slideUp(2000);
                                $("#adDiv").fadeOut(3000);
                                clearInterval(time);
                        }                        
                </script>
1.4        总结:
1.4.1        JQuery的选择器:
【基本选择器】(*****)

* 用法:$(“#id”)

* 用法:$(“.类名”)

* 用法:$(“元素名称”)

* 用法:$(“*”)

* 用法:$(“选择器,选择器,选择器”)


                        
[JavaScript] 纯文本查看 复制代码
$(function(){
                                $("#but1").click(function(){
                                        // alert("aaaa");
                                        $("#one").css("background","#bbffaa");
                                });
                                
                             $("#but2").click(function(){
                                        $(".mini").css("background","#bbffaa");
                                });
                                
                                $("#but3").click(function(){
                                        $("div").css("background","#bbffaa");
                                });
                                
                                $("#but4").click(function(){
                                        $("*").css("background","#bbffaa");
                                });
                                
                                $("#but5").click(function(){
                                        $("#two,span,.mini").css("background","#bbffaa");
                                });
                        });
【层级选择器】:

               
[JavaScript] 纯文本查看 复制代码
<script>
                        $(function(){
                                // 后代选择器:
                                $("#but1").click(function(){
                                        $("body div").css("background","#bbffaa");
                                });
                                
                                // body下的第一层div元素
                                $("#but2").click(function(){
                                        $("body > div").css("background","#bbffaa");
                                });
                                
                                // 查找下一个同辈的元素
                                $("#but3").click(function(){
                                        $("#three + div").css("background","#bbffaa");
                                });
                                
                                $("#but4").click(function(){
                                        $("#two ~ div").css("background","#bbffaa");
                                });                                
                        });                        
                </script>
【基本过滤选择器】
:first
:last
:not(selector)
:even
:odd
:header
:focus


               
[JavaScript] 纯文本查看 复制代码
<script>
                        $(function(){
                                $("#but1").click(function(){
                                        $("#three div:first").css("background","#bbffaa");
                                });
                                $("#but2").click(function(){
                                        $("#three div:last").css("background","#bbffaa");
                                });
                                $("#but3").click(function(){
                                        $("div:odd").css("background","#bbffaa");
                                });
                                $("#but4").click(function(){
                                        $("div:even").css("background","#bbffaa");
                                });
                                $("#but5").click(function(){
                                        $("#three div:eq(1)").css("background","#bbffaa");
                                });
                        });                        
                </script>
【内容选择器】
:contains(text)
:empty
:has(selector)
:parent


               
[JavaScript] 纯文本查看 复制代码
<script>
                        $(function(){
                                $("#but1").click(function(){
                                        $("div:contains('1')").css("background","#bbffaa");
                                });
                        });                        
                </script>
【属性选择器】
[attribute]
[attribute=value]
[attribute!=value]
[attrSel1][attrSel2][attrSelN]
【表单选择器】
:input
:text
:password
:radio
:checkbox
:image
:reset
:submit
:button
:file
:hidden


               
[JavaScript] 纯文本查看 复制代码
<script>
                        $(function(){
                                $("#but1").click(function(){
                                        $(":input").css("background","#bbffaa");
                                });
                                $("#but2").click(function(){
                                        // $(":text").css("background","#bbffaa");
                                        $("input[type='text']").css("background","#bbffaa");
                                });
                        });                        
                </script>
【表单属性选择器】
:enabled
:disable
:checked
:selected


2        案例二:表格隔行换色的案例:
2.1        需求:
对数据的表格进行隔行换色的显示效果,使用JQuery完成该效果.

2.2        分析:
2.2.1        技术分析:
【JQuery的选择器】
* 基本过滤选择器:
    * odd        :
    * even        :
【JQuery中添加和移除样式】
* 如果样式没有事先定义,可以使用css方法为奇数行或者偶数行设置背景颜色.
* 如果已经在css文件中事先将样式定义完成了,不用使用css方法了.使用JQ中的CSS类中的方法:
    * addClass();
    * removeClass();
2.2.2        步骤分析:
【步骤一】:引入jquery的js
【步骤二】:在页面加载的函数中,选择奇数行,添加样式
【步骤三】:在页面加载的函数中,选择偶数行,添加样式
2.3        代码实现:
               
[JavaScript] 纯文本查看 复制代码
<script>
                        $(function(){
                                /*$("tr:odd").addClass("odd");
                                $("tr:even").addClass("even");*/
                                
                                $("tbody tr:odd").addClass("odd");
                                $("tbody tr:even").addClass("even");
                        });
                </script>


3        案例三:使用JQuery完成复选框的全选和全不选
3.1        需求:
使用JQuery完成复选框的全选和全不选的操作:

3.2        分析:
3.2.1        技术分析:
【JQuery对属性的操作的方法】
* attr();
    * 使用方法一:$(“”).attr(“src”);
    * 使用方法二:$(“”).attr(“src”,”test.jpg”);
    * 使用方法三:$(“”).attr({“src”:”test.jpg”,”width”:”100”});
* removeAttr();
* prop();新版本的方法.
    * 使用方法一:$(“”).prop(“src”);
    * 使用方法二:$(“”).prop(“src”,”test.jpg”);
    * 使用方法三:$(“”).prop({“src”:”test.jpg”,”width”:”100”});
* removeProp();
* addClass()
* removeClass();
3.2.2        步骤分析:
【步骤一】:在页面中添加复选框.
【步骤二】:引入jquery的js
【步骤三】:编写JQ的入口函数
【步骤四】:点击上面的复选框,获得下面的所有的复选框.
【步骤五】:修改下面的复选框的值.
3.3        代码实现:
                        
[JavaScript] 纯文本查看 复制代码
// 复选框全选和全不选
                        $(function(){
                                // 获得上面的复选框:
                                //var $selectAll = $("#selectAll");
                                // alert($selectAll.attr("checked"));
                                /*$selectAll.click(function(){
                                        // alert($selectAll.prop("checked"));
                                        if($selectAll.prop("checked") == true){
                                                // 上面的复选框被选中
                                                $(":checkbox[name='ids']").prop("checked",true);
                                        }else{
                                                // 上面的复选框没有被选中
                                                $(":checkbox[name='ids']").prop("checked",false);
                                        }
                                });*/
                                
                                // 简化:
                                $("#selectAll").click(function(){
                                        $(":checkbox[name='ids']").prop("checked",this.checked);
                                });
                        });


4        案例四:使用JQuery完成省市二级联动:
4.1        需求:
在注册页面上籍贯的信息,需要用到省市联动效果.

4.2        分析:
4.2.1        技术分析:
【JQuery的DOM操作】
* 常用的方法:
    * append();                        ---在某个元素后添加内容.        
    * appendTO();                ---将某个元素添加到另一个元素后.
    * remove();                        ---将某个元素移除.
【JQuery的遍历】
遍历的方式一:
[JavaScript] 纯文本查看 复制代码
* $.each(objects,function(i,n){
   
});

遍历的方式二:
[JavaScript] 纯文本查看 复制代码
* $(“”).each(function(i,n){

});

                        
[JavaScript] 纯文本查看 复制代码
$(function(){
                                var arrs = new Array("张森","张凤","张芙蓉");
                                // 将这个数组转成JQ的对象使用each方法.
                                /*$(arrs).each(function(i,n){
                                        alert(i+"   "+n);
                                });*/
                                
                                $.each(arrs,function(i,n){
                                        alert(i+"   "+n);
                                });
                        });
4.2.2        步骤分析:
【步骤一】:引入注册页面,引入jq的js.
【步骤二】:获得到第一个下拉列表,change事件.
【步骤三】:获得到被选中的下拉列表的值.
【步骤四】:去数组中进行比对.
【步骤五】:将数组中的值遍历获得到.
【步骤六】:创建元素,创建文本,将文本添加到元素中,将元素添加到第二个列表中.
4.3        代码实现:
               
[JavaScript] 纯文本查看 复制代码
<script>
                        $(function(){
                                // 定义数组:
                                /*var arrs = new Array(5);
                                arrs[0] = new Array("杭州市","绍兴市","温州市","义乌市","嘉兴市");
                                arrs[1] = new Array("南京市","苏州市","扬州市","无锡市");
                                arrs[2] = new Array("武汉市","襄阳市","荆州市","宜昌市","恩施");
                                arrs[3] = new Array("石家庄市","唐山市","保定市","邢台市","廊坊市");
                                arrs[4] = new Array("长春市","吉林市","四平市","延边市");*/
                                
                                var cities = [
                                        ["杭州市","绍兴市","温州市","义乌市","嘉兴市"],
                                        ["南京市","苏州市","扬州市","无锡市"],
                                        ["武汉市","襄阳市","荆州市","宜昌市","恩施"],
                                        ["石家庄市","唐山市","保定市","邢台市","廊坊市"],
                                        ["长春市","吉林市","四平市","延边市"]
                                ];
                                
                                var $city = $("#city");
                                // 获得代表省份的下拉列表:
                                $("#province").change(function(){
                                        // alert(this.value);
                                        // alert($(this).val());
                                        $city.get(0).options.length = 1;
                                       
                                        var val = this.value;
                                        // 遍历并且判断:
                                        $.each(cities,function(i,n){
                                                // 判断:
                                                if(i == val){
                                                        $(n).each(function(j,m){
                                                                // alert(j+"   "+m);
                                                                $city.append("<option>"+m+"</option>");
                                                        });
                                                }
                                        });
                                });
                        });
                </script>


5        案例五:下拉列表的左右选择:
5.1        需求:
在分类的修改的页面中,有某个分类下的所属的商品的信息.可以对这些商品信息进行选择.

5.2        分析:
5.2.1        技术分析:
【JQuery的选择器】
:enabled
:disable
:checked
:selected
5.3        代码实现:
传统的JS的方式进行实现:
      
[JavaScript] 纯文本查看 复制代码
window.onload=function(){
                 // 添加到右侧:
                   document.getElementById("addRight").onclick = function(){
                   // 获得左侧的下拉列表
                   var selectLeft = document.getElementById("selectLeft");
                    // 遍历左侧列表中的所有的option元素.
                   for(var i = selectLeft.options.length - 1;i>=0;i--){
                      // 判断该元素是否被选中
                    if(selectLeft.options.selected == true){
                        document.getElementById("selectRight").appendChild(selectLeft.options);
                                }
                         }
                    }                              
                   // 全部到右侧:
                    document.getElementById("addAll").onclick = function(){
                    // 获得左侧的下拉列表
                      var selectLeft = document.getElementById("selectLeft");
                    // 遍历左侧列表中的所有的option元素.
                     for(var i = selectLeft.options.length - 1;i>=0;i--){
                         document.getElementById("selectRight").appendChild(selectLeft.options);
                             }
                         }
                    }

使用JQ完成下拉列表左右选择:
                       
[JavaScript] 纯文本查看 复制代码
 $(function(){
                                // 添加左侧选中的元素到右侧
                                $("#addRight").click(function(){
                                        // 获得左侧被选中的option元素:
                                        $("#selectLeft option:selected").appendTo("#selectRight");
                                });
                                
                                // 添加所有到右侧
                                $("#addAll").click(function(){
                                        // 获得左侧被选中的option元素:
                                        $("#selectLeft option").appendTo("#selectRight");
                                });
                                
                                // 移除右侧被选中元素到左侧:
                                $("#removeLeft").click(function(){
                                        $("#selectRight option:selected").appendTo("#selectLeft");
                                });
                                
                                // 移除右侧被选中元素到左侧:
                                $("#removeAll").click(function(){
                                        $("#selectRight option").appendTo("#selectLeft");
                                });
                                
                                // 双击左侧的的某个元素,移动到右侧:
                                $("#selectLeft").dblclick(function(){
                                        $("option:selected",this).appendTo("#selectRight");
                                });
                                       
                                // 双击左侧的的某个元素,移动到右侧:
                                $("#selectRight").dblclick(function(){
                                        $("option:selected",this).appendTo("#selectLeft");
                                });
                        });
5.4        总结:
5.4.1        JQuery常用事件:
    blur([[data],fn])
    change([[data],fn])
    click([[data],fn])
    dblclick([[data],fn])
    error([[data],fn])
    focus([[data],fn])
    keydown([[data],fn])
    keypress([[data],fn])
    keyup([[data],fn])
    mousedown([[data],fn])
    resize([[data],fn])
    scroll([[data],fn])
    select([[data],fn])
    submit([[data],fn])
    unload([[data],fn])
5.4.2        JQ的事件切换:
* toggle();        --单击事件的切换
* hover();                --鼠标悬停的切换







作者: 黑马嗨嗨嗨    时间: 2016-12-4 20:07
厉害了!收藏!!!
作者: 橘子哥    时间: 2016-12-5 10:29
马上收藏,哈哈!
作者: aA772807986    时间: 2016-12-7 22:35
学习......
作者: xike1024    时间: 2016-12-8 13:10
厉害......
作者: 黑驴来变马    时间: 2016-12-9 15:33


作者: wujianming    时间: 2016-12-9 21:26
顶起,我也收藏
作者: sunnyme    时间: 2016-12-11 23:11
还好还好好还好还好好,很好
作者: 孤独于我    时间: 2016-12-22 21:20
真是厉害
作者: 小陵不懂    时间: 2016-12-26 09:39
希望能完整的系列性帖子,O(∩_∩)O谢谢
作者: Dreamkele    时间: 2016-12-28 00:12
尴尬症都犯了.....一堆的demo
作者: @211    时间: 2017-1-1 16:30
很好的学习技术!不错
作者: 事难懂    时间: 2017-1-3 13:23
好东西,收藏了
作者: hittor    时间: 2017-1-3 19:18
感谢分享!
作者: vip825779    时间: 2017-1-5 09:05
正好需要,,哈哈哈
作者: Yin灬Yan    时间: 2017-1-10 00:03
顶顶贴 加加油
作者: zmanx    时间: 2017-2-12 22:15
原来是黑马官方的啊,怪不得啊,好厉害哦
作者: 爱吃橘子的小泽    时间: 2017-2-12 22:17
顶一下,祝黑马越办越好
作者: a690223483    时间: 2017-2-22 21:11
才看见官方的  我说资料这么齐全呢
作者: zhangkaitong    时间: 2017-2-24 13:26
谢谢分享 赞赞赞!!!!!
作者: xulinml    时间: 2017-2-28 08:55
谢谢老师~!~感谢感谢
作者: 为过去的我买单    时间: 2017-3-2 10:08
谢谢分享!
作者: 掬一束月光    时间: 2017-3-24 18:19
谢谢小鲁哥哥
作者: zhouxiaoyang    时间: 2017-3-26 23:18

作者: 千千阙歌    时间: 2017-3-28 23:32
看看看看
作者: ys5214    时间: 2017-3-30 13:14
66666666666
作者: Cerol    时间: 2017-4-12 17:20
力挺楼主,支持你   666
作者: yy297970409    时间: 2017-4-13 23:49
谢谢楼主  已保存
作者: hrywxn    时间: 2017-5-22 22:19
厉害......
作者: lvshen9    时间: 2017-5-26 09:43
谢谢分享
作者: zsldeyou    时间: 2017-5-29 10:37
谢谢分享 赞赞赞!!!!!
作者: liujinlong666    时间: 2017-5-30 00:13
谢谢分享
作者: a851699    时间: 2017-6-16 22:21
可以,很强势
作者: yang6832156    时间: 2017-6-25 10:36
6666666666666666666666666
作者: qq494257084    时间: 2017-7-2 13:13
谢谢分享,辛苦啦
作者: 宏博    时间: 2017-7-3 10:53
嘿嘿,好东西
作者: 江楼感旧    时间: 2017-7-4 21:02
6666666666
作者: str.arr    时间: 2017-7-9 09:30
学好java前段也得会吗
作者: cheat    时间: 2017-7-10 22:39
很好的资源,赞赞赞。
作者: 梁修成    时间: 2017-7-10 22:39

笔记做的很详细,很认真..,,.,
作者: zsldeyou    时间: 2017-7-19 13:15
谢谢楼主{:8_468:}
作者: zsldeyou    时间: 2017-7-31 14:48
楼主真棒!!!!{:8_468:}
作者: rimfwfn    时间: 2017-8-1 20:44
谢谢了,我的哥!!!
作者: k1453711238    时间: 2017-8-2 22:31
多谢大哥分享啊,希望持续更新啊
作者: 363548578    时间: 2017-8-13 14:58
感觉我好像没有学过啊
作者: jiangchanghong1    时间: 2017-8-26 23:23
666666666666666666666666
作者: →_→←_←    时间: 2017-8-28 15:53
学习ing.....
作者: 榕树长枫叶    时间: 2017-10-7 11:38
资料好全




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2