jQuery初步

Posted 十三弦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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());
alert($("form+input").size());
//找到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());
//给h1\h2\h3标签加上红色背景,蓝色文字,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=‘width: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对象里面。

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方法。

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);
        });
    }});
}

 

以上是关于jQuery初步的主要内容,如果未能解决你的问题,请参考以下文章

markdown 在WordPress中使用jQuery代码片段

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面

很实用的JQuery代码片段(转)

jQuery初步

几个有用的JavaScript/jQuery代码片段(转)

几个非常实用的JQuery代码片段