zoukankan      html  css  js  c++  java
  • jQuery初步

    1.jQuery开发步骤

       jQuery是第三方开源组织基于js写的一款跨主流浏览器的实用库。

      (1)引用第三方js库文件,<script type="text/javascript" src="js/jquery-1.8.2.js"></script>

      (2)查阅并使用api手册,$("#divID").html()/val()/text()/css("color","red")/....

    2.js对象转成jQuery对象

      语法:$(js对象)---->jQuery对象

      例如:$(divElement)---->$div

    3.jQuery对象的三种基本定位方式

      (A)通过ID属性:$("#id属性值")

      (B)通过标签名:$("标签名")

      (C)通过CLASS属性:$(".样式名")

    4.jQuery9类选择器

    基本选择器

    //查找id的元素个数
    alert($("#div1ID").size());
    //查找div元素个数
    alert($("div").length);
    //查找class元素个数
    alert($(".myClass").size());
    //查找div,span,p的个数
    alert($("div,span,p").size());
    //查找所有id,class,p的元素个数
    alert($("#div1ID,.myClass,p").size());

    层次选择器

    //找到form里面的input
    alert($("form input").size());
    //找到form里所有子级input元素
    alert($("form>input").size());
    //找到form同级的第一个input的值
    alert($("form+input").val());
    //找到form同级的input元素个数,从form往后找
    alert($("form~input").length);

    基本加强型选择器

    //得到第一个li
    alert($("ul li:first").text());
    //得到最后一个li
    alert($("ul li:last").text());
    //得到第3个li,从0开始计数
    alert($("ul li:eq(2)").text());
    //得到偶数的tr
    alert($("table tr:even").text());
    //得到奇数的tr
    alert($("table tr:odd").text());
    //查找表格中索引号大于0的tr
    alert($("table tr:gt(0)").size());
    //查找表格中索引号小于4的tr
    alert($("table tr:lt(4)").size());
    //给h1h2h3标签加上红色背景,蓝色文字,header只用于h1、h2、h3
    $(":header").css("background-color","red").css("color","blue");
    //查找未选中的input为checkbox的元素个数
    alert($(":checkbox:not(:checked)").size());

    内容选择器

    //查找所有包含文本"John"的div元素的个数
    alert($("div:contains('John')").size());
    //查找所有p元素为空的元素个数,不包含<p/>元素
    alert($("p:empty").size());
    //给所有包含p元素的div元素添加一个myClass样式
    $("div:has(p)").addClass("myClass");
    //查找所有含有子元素或者文本的p元素个数,即p为父元素,包含<p/>元素
    alert($("p:parent").size());

    可见性选择器

    //1)查找隐藏的tr元素的个数
    alert($("table tr:hidden").size());
    //2)查找所有可见的tr元素的个数
    alert($("table tr:visible").size());

    属性选择器

    //查找所有含有id属性的div元素个数
    alert($("div[id]").size());
    //查找所有name属性是newsletter的input元素,并将其选中
    $("input[name='newsletter']").attr("checked","checked");
    //查找所有name属性不是newsletter的input元素,并将其选中
    $("input[name!='newsletter']").attr("checked","checked");
    //查找所有name属性以'news'开头的input元素,并将其选中
    $("input[name^='news']").attr("checked","checked");
    //查找所有name属性以'letter'结尾的input元素,并将其选中
    $("input[name$='letter']").attr("checked","checked");
    //查找所有name属性包含'news'的input元素,并将其选中
    $("input[name*='news']").attr("checked","checked");
    //找到所有含有id属性,并且它的name属性是以"letter"结尾的input元素,并将其选中
    $("input[id][name$='letter']").attr("checked","checked");

    子元素选择器

    //迭代[each]每个ul中第1个li元素中的内容,索引从1开始
    $("ul li:first-child").each(function () {
        //alert(this.text());传统js对象不能调用text
        alert($(this).text());
    })
    //迭代每个ul中最后1个li元素中的内容,索引从1开始
    $("ul li:last-child").each(function () {
        //alert(this.text());传统对象不能调用text
        alert($(this).text());
    })
    //迭代每个ul中第2个li元素中的内容,索引从1开始
    $("ul li:nth-child(2)").each(function () {
        alert($(this).text());
    })
    //在ul中查找是唯一子元素的li元素的内容
    $("ul li:only-child").each(function () {
        alert($(this).text());
    })

    表单选择器

    //查找所有input元素的个数
    //alert( $("input").size() );//10,找input标签
    alert( $(":input").size() );//13,找input标签和select/textarea/button
    //查找所有文本框的个数
    alert( $(":text").size() );
    //查找所有密码框的个数
    alert( $(":password").size() );
    //查找所有单选按钮的个数
    alert( $(":radio").size() );
    //查找所有复选框的个数
    alert( $(":checkbox").size() );
    //查找所有提交按钮的个数,包括<button>标签
    alert( $(":submit").size() );
    //匹配所有图像域的个数
    alert( $(":image").size() );
    //查找所有重置按钮的个数
    alert( $(":reset").size() );
    //查找所有普通按钮的个数,包括input的type=button
    alert( $(":button").size() );
    //查找所有文件域的个数
    alert( $(":file").size() );
    //查找所有input元素为隐藏域的个数
    alert( $(":input:hidden").size() );

    表单对象属性选择器

    //查找所有可用的input元素的个数
    alert($("input:enabled").size());
    //查找所有不可用的input元素的个数
    alert( $("input:disabled").size() );
    //查找所有选中的复选框元素的个数
    alert( $(":checkbox:checked").size() );
    //查找所有未选中的复选框元素的个数
    alert( $(":checkbox:NOT(:checked)").size() );
    //查找所有选中的选项元素的个数
    alert( $("select option:selected").size() );
    //查找id为provinceID的select的未选中的选项个数
    alert( $("#provinceID option:NOT(:selected)").size() );

    5.jQuery方法

    DOM标准规则下的jQuery常用API

    //DIV标签插入到UL标签之后(父子关系)
    $("ul").append($("div"));
    //DIV标签插入到UL标签之前(父子关系)
    $("ul").prepend($("div"));
    //DIV标签插入到UL标签之后(兄弟关系)
    $("ul").after($("div"));
    //DIV标签插入到UL标签之前(兄弟关系)
    $("ul").before($("div"));
    
    //取得form里第一个input元素的type属性
    //<input type="text" name="username" value="张三"/>
    alert($("form input:first").attr("type"));
    //设置form里最后一个input元素的为只读文本框
    $("form input:last").attr("readonly","true");
    
    //创建div元素,添加"哈哈"文本,ID属性,并添加到文档中
    /*js方式*/
     var divElement = document.createElement("div");
     divElement.innerHTML = "哈哈哈";
     divElement.setAttribute("id","2015");
     divElement.id = "2015";
     document.body.appendChild(divElement);
    //jquery方式
    var $div = $("<div id='2015'>哈哈哈哈</div>")
    $("body").append($div)
    $(document.body).append($div);
    
    //删除ID为secondID的LI元素
    $("#secondID").remove();
    //删除第一个ul中的所有LI元素
    $("#a li").remove();
    //删除第二个UL元素
    $("#b").remove();
    
    //复制原input元素,添加到原input元素后,与其同级
    var $old = $(":button");
    var $new = $old.clone();
    $new.val("新按钮");
    $old.after($new);
    //为原input元素动态添加单击事件,且复制原input元素,
    var $old = $(":button");
    $old.click(function (){
        alert("动态事件");
    })
    //添加到原input元素后,与其同级,且和原按钮有一样的行为
    var $old = $(":button");
    var $new = $old.clone(true);//复制行为和样式
    $new.val("新按钮");
    $old.after($new);
    
    //双击<div>中的文本,用文本框替换文本
    $("div").dblclick( function(){
        var $text = $("<input type='text' style='165px;height:23px'/>");
        //文本框替代div标签
        $(this).replaceWith( $text );
    } );
    
    //为<table>元素添加属性border/align/width
    $("table").attr("border","2").attr("align","right").attr("width","60%");
    //将<table>元素的align属性删除
    $("table").removeAttr("align");

    添加样式

    //为无样式的DIV添加样式
    $("div:first").addClass("myClass");
    //为有样式的DIV删除样式
    $("div:last").removeClass("myClass");
    //切换样式,即有样式的变成无样式,无样式的变成有样式
    $("div").toggleClass("myClass");
    //最后一个DIV是否有样式
    var flag = $("div:last").hasClass("myClass");
    alert(flag?"有样式":"无样式");
    
    //获取图片的坐标
    var offset = $("img").offset();
    var x = offset.left;
    var y = offset.top;
    alert(x);
    alert(y);
    //设置图片的坐标
    $("img").offset({
        top:100,
        left:200
    });
    //获取图片的宽高
    var w = $("img").width();
    var h = $("img").height();
    alert(w+":"+h);
    //设置图片的宽高
    $("img").width(500);
    $("img").height(600);
    
    //取得div元素的直接子元素内容,不含后代元素
    //<div>
    //    <span>
    //        Hello Again
    //        <b>
    //            Bold
    //        </b>
    //    </span>
    //</div>
    alert($("div").children().text());//Hello Again Bold
    //取得div元素的下一个同级的兄弟元素内容
    alert($("div").next().text());
    //取得div元素的上一个同级的兄弟元素内容
    alert($("div").prev().text());
    //依次取得div元素同级的所有兄弟中p元素的内容
    $("div").siblings("p").each(function(){
        alert($(this).text());
    });

    动画

    //图片隐蔽
    $("img").hide(5000,function(){
        alert("隐藏完毕");
    });
    //休息3秒
    window.setTimeout(function(){
        $("img").show(5000);
    },3000);
    
    //淡出隐蔽图片
    $("img").fadeOut(3000);
    //淡入显示图片
    $("img").fadeIn(3000);
    
    $(":button").click(function(){
        //div标标上下移动
        $("div").slideToggle(100);
    });

    6.jQuery事件

            /*使用JS方式加载a()和b()二个方法,后面的覆盖前面的*/
            window.onload = function(){
                a();
            }
            window.onload = function(){
                b();
            }
            /*使用jQuery最简方式加载a()和b()二个方法,不会覆盖两个都会执行*/
            $(function(){
                a();
            });
            $(function(){
                b();
            });
            //当<select>标签触发onchange事件,显示选中<option>的value和innerHTML属性的值
            $("#city").change( function(){ 
                var $option = $("#city option:selected");
                var value = $option.val();
                var text = $option.text();
                alert(value+":"+text);
            } );
            //加载页面时获取光标并选中所有文字
                    $(function(){
                        //定位光标
                        $(":text").focus();
                        //选中字体
                        $(":text").select();
                    })    
            //当按键弹起时,显示所按键的unicode码
            $(function(){
            //IE浏览器会自动创建event这个事件对象,那么程序员可以根据需要来使用该event对象
                $(document).keyup(function(){
                //获取按钮的unicode编码
                var code = event.keyCode; 
                alert(code);
                });
            });
            //显示鼠标移动时的X和Y座标
            $(function(){
                $(document).mousemove(function(){
                    var x = event.clientX;
                    var y = event.clientY;
                    $("#xID").val(x);
                    $("#yID").val(y);
                });        
            });
            //鼠标移到某行上,某行背景变色
            $("table tr").mouseover(function(){
                $(this).css("background-color","activecaption");
            });    
            
            //鼠标移出某行,某行还原
            $("table tr").mouseout(function(){
                $(this).css("background-color","white");
            });
            
            //鼠标移到某图片上,为图片加边框
            $("img").mouseover(function(){
                $(this).css("border-color","red");
            });
            
            //鼠标移出图片,图片还原
            $("img").mouseout(function(){
                $(this).css("border-color","white");
            });
        <script type="text/javascript">
            //浏览器加载web页面时触发
            $(function(){
                $("form :text").focus();
            })
        </script>
    
        <script type="text/javascript">
            //检测是否为中文,true表示是中文,false表示非中文
            function isChinese(str){
                var reg = /^[u4E01-uFA29]+$/i;
                if(reg.test(str))
                {
                    return true;
                }
                return false;
            }
        </script>
    
        <script type="text/javascript">
            //当表单提交前检测
            $("form").submit(function(){
                var flag = false;
                //获取文本框中内容
                var inputText = $("form :text").val();
                //去空格
                inputText = $.trim(inputText);
                //判断是否有内容
                if(inputText.length >0){
                    //如果有英文
                    if(isChinese(inputText))
                    {
                        flag = true;
                        $("form :text").val("");
                    }
                    else {
                        alert("用户名必须为中文")
                    }
                }
                else {
                    alert("必须填写用户名")
                }
                return flag;
            })
        </script>
            //浏览器加载页面时,文本框样式改变
            $(function(){
                $("table :text").addClass("myClass");
            });
            //光标移上去时,清空文本框内容
            $("table :text").focus(
                    function(){
                        $(this).val("");
                        $(this).removeClass("myClass");
                    }
            );
            //当文本框失去焦点时,恢复原来的样式
            $("table :text").blur(function(){
                var content = $(this).val();
                if($.trim(content).length == 0)
                {
                    $(this).val("输入用户名");
                    $(this).addClass("myClass");
                }
            })

    7.jQuery中使用AJAX

      简单获取时间,jquery对象调用load,直接将返回的数据插入到jquery对象里面。对于load方法而言,如果请求体无参数发送的话,load方法采用GET方式提交,如果请求体有参数发送的话,load方法采用POST方式提交。

      简单形式:jQuery对象.load(url)

               返回结果自动添加到jQuery对象代表的标签中间

               如果是Servlet的话,采用的是GET方式

        如果是Servlet的话,采用的是GET方式。

          复杂形式:jQuery对象.load(url,sendData,function(backData,textStatus,ajax){... ...})

               sendData = {"user.name":"jack","user.pass":"123"};

               以JSON格式文本方式发送,使用POST方式发送,服务端能收到数据

    function getMsg(){
        var url = "${pageContext.request.contextPath}/ajax_time?time="+new Date().getTime();
        // 参数一:url
        // 参数二:以post方式发送的JSON格式数据
        // 参数三:回调函数
        $("#timeSpan").load(url,null,function(backData,textStatus,ajax){
            //回调函数的三个参数
            //返回的数据,它是js对象
            alert(backData);
            //返回状态的文本描述,例如success,error
            alert(textStatus);
            //ajax对象
            alert(ajax.responseText);//是一个字符串
        });
    }

    验证用户是否存在,使用$.post方法。如果页面有太多数据要发送,不需要一一写json格式的发送数据,只需要调用$(jquery对象).serialize()方法,它会自动将对象中有name属性的对象自动转换为json格式的数据。

    function checkEmp(input){
        var empName=$(input).val();
        //去掉空格
        empName = $.trim(empName);
        if(empName.length == 0)
        return;
        var url="${pageContext.request.contextPath}/emp_checkEmp?time="+new Date().getTime();
        //手动写json对象
        var sendData = {
            empName:empName
        };
        //jquery自动生成json对象
        //var sendData = $("form").serialize();
        alert(sendData);
        $.post(url,sendData, function (backData) {
            //创建img标签
            var $img = $("<img src='"+backData+"' height='14px' width='14px'/>");
            //清空span,然后添加图片
            $("span").text("");
            $("span").append($img);
        })
    }

    二级联动:

    function getCity(province){
        var index = province.selectedIndex;
        if(index == 0)
        return;
        var $province = $(province[index]).text();
        var url = "${pageContext.request.contextPath}/ajax_getCity?time="+new Date().getTime();
        var sendData = {
            province:$province
        }
        $.post(url,sendData,function(xml){
            //清空city下拉菜单
            $("#cityID option:gt(0)").remove();
            //xml是js对象
            var $xml = $(xml).find("city");
            $xml.each(function(){
                //text可以访问xml标签
                var option = $("<option>"+$(this).text()+"</option>");
                //添加到下拉菜单
                $("#cityID").append(option);
            });
        })
    }

    $.ajax方式

    function getCity(province){
        var index = province.selectedIndex;
        if(index == 0)
            return;
        var $province = $(province[index]).text();
        var url = "${pageContext.request.contextPath}/ajax_getCity?time="+new Date().getTime();
        var sendData = {
            province:$province
        }
        $.ajax({
            type:"POST",
            url:url,
            data:sendData,
            success:function(xml){
            //清空city下拉菜单
            $("#cityID option:gt(0)").remove();
            //xml是js对象
            var $xml = $(xml).find("city");
            $xml.each(function(){
                //text可以访问xml标签
                var option = $("<option>"+$(this).text()+"</option>");
                //添加到下拉菜单
                $("#cityID").append(option);
            });
        }});
    }

     获取json数据

    action方法

    public class ProvinceCityAction extends ActionSupport{
        private String province;
        public void setProvince(String province) {
            this.province = province;
            //System.out.println("注入" + province);
        }
        //根据省份查询城市
        public String findCityByProvince() throws Exception {
            setCity = new LinkedHashSet<String>();
            if("湖南".equals(province)){
                setCity.add("长沙");
                setCity.add("株洲");
            }else if("广东".equals(province)){
                setCity.add("广州");
                setCity.add("中山");
                setCity.add("佛山");
            }
            return SUCCESS;
        }
        private Set<String> setCity;
        public Set<String> getSetCity() {
            return setCity;
        }
    }

    js

    $("#province").change( function(){
                //清空原城市下拉框中的内容,除第一项外
                $("#city option:gt(0)").remove();
                //获取选中的省份
                var province = $("#province option:selected").text();
                //如果选中的不是"选择省份"
                if("选择省份"!=province){
                    $.ajax( {
                        type    : "POST",
                        url     : "${pageContext.request.contextPath}/struts2/findCityByProvinceRequest?time="+new Date().getTime(),
                        data    : {"province":province},
                        success : function(backDate,textStatus,ajax){
                                    //解析json文本
                                    var array = backDate.setCity;
                                      var size = array.length;
                                      for(var i=0;i<size;i++){
                                          var city = array[i];
                                          var $option = $("<option>"+city+"</option>");
                                          $("#city").append($option);
                                      }
                                  }
                    } );
                }
            } );
  • 相关阅读:
    css3
    如何去渲染数据?
    ajax
    Java多线程-线程安全
    java多线程-基础
    Git-团队开放中的代码同步与提交
    IDEA 调试Spring-boot 应用
    微服务-各种pom的配置和注解
    微服务-服务与注册中心
    微服务
  • 原文地址:https://www.cnblogs.com/juaner767/p/5616968.html
Copyright © 2011-2022 走看看