jquery入门

a 夏天 提交于 2019-12-17 04:02:24

jquery入门

1.什么是jquery?

优秀的JavaScript库,封装了JavaScript的常用功能,直接调动
语法简洁:$('选择器').方法()

*/特点*/
jQuery强调的理念是写得少,做得多(write less, do more),jQuery独特的选择器、链式操作、事件处理机制和封装完善的ajax都是其他库望尘莫及的。概括起来,jQuery有以下优势。
● 轻量级。
● 强大的选择器。
● 出色的DOM操作的封装。
● 可靠的事件处理机制。
● 完善的ajax。
● 不污染顶级变量。
● 出色的浏览器兼容性。
● 链式操作方式。
● 隐式迭代。
● 行为层和结构层分离。
● 丰富的插件支持。
● 完善的文档。
● 开源。

2.jquery的引入

1.jquery实际上就是一个.js文件,获取jQuery库文件有两种方式:

        1.去官方网站下载:http//jquery.com/
                       中文网 https://www.jquery123.com/
        2.CDN下载:https://www.bootcdn.cn/jquery



<!-- 1.引入网上  CDN(内容分发网) -->
<!-- <script src='http://libs.baidu.com/jquery/1.11.1/jquery.min.js'></script> -->
<!-- 2.引入本地 -->
<script src="jquery-3.4.1.js"></script>



2.版本
最新版本3.4.1 
jQuery从2.0版本以后不再兼容IE,公司开发中使用2.0以下版本
压缩版本:用于项目开发
未压缩版本:用于学习,研究



3.$与jQuery的关系

$就是jquery对象的别名,$是jQuery的简写
window.jQuery = window.$ = jQuery;

$("button").click(function () {
    alert("Fd");
});
jQuery("button").click(function () {
    alert("Fd");
});

就相当于var a = 10;
       var b = c = a;

4.页面加载

$(document).ready(function () {
    alert("1");
});
$().ready(function () {
    alert("2");
});
$(function () {
    alert("3");
});


window.onload和ready方法的区别?

            window.onload:
                等文档和资源都加载完成后调用(必须等网页中所有的内容加载完毕后才能执行,包括图片)
                会覆盖,后面的会覆盖前面
                没有简写形式
            
            ready:
                等文档加载完成后就调用(网页中所有DOM结构绘制完毕就可以执行,可能DOM元素相关的内容并没有加载完)
                不会覆盖,会叠加
                可以简写$(function(){});

5.jQuery对象与DOM对象的关系

<!-- 
        jq和js的关系:可以共存,不能混用
        jquery对象和DOM对象的互换
            jquery对象转DOM对象,直接加下标获取$("#box")[0]
            DOM对象转jquery对象,直接在外面加$(); $(Div);
-->
    
    <div id="box"></div>
    <script src="jquery.js"></script>
    <script>
        //js
        var oDiv = document.getElementById("box");
        oDiv.style.width = "200px";
        oDiv.style.height = "200px";

        //jq
        $("#box").css("background","green");
        //可以共存,不能混用  $("#box").style.background = "red";

        
         //DOM对象: id  tagname className 
         var dom = document.getElementById("box");
         console.log(dom); //<div id="box"></div>   DOM对象

         //jquery对象:$(选择器)
         console.log($("#box")); //init [div#box, context: document, selector: "#box"]

         //互换
        
         //1.jquery对象转DOM对象,直接加下标获取$("#box")[0]
         $("#box")[0].style.background = "red";
         //2.DOM对象转jquery对象,直接在外面加$(); $(Div);
         $(dom).css("background","pink");

    </script> 

6.选择器

所有的css选择器都可以在jq中使用 id 元素 类 后代 相邻 通配符 伪类

没有优先级,以先后顺序为主

(1)基本选择器

#box 获取标签中id名为box的标签
.box 获取所有class名为box的标签
$(“标签名”) 获取所有对应标签名的标签
        //1.id选择器 #   
        $("#box").css("background","red");

        //2.类选择器 .box    所有类名叫box的标签
        $(".box").css("background","pink");

        //3.元素选择器  $("标签名")
        $("div").css("background","green");



        //自动给所有选中的标签添加事件,自动循环
        $("div").click(function(){
            console.log(this); //<div></div>  dom
            $(this).css("background","red");  
            //this: this是dom对象,需要转换

        });
      
        //下标,每一个对象,都会有一个方法index(选择器);
        //index:给当前元素的父元素的所有子元素添加的下标
            var index = $(this).index();   //index:给当前元素的父元素的所有子元素添加的下标
            var index = $(this).index("li");  //指定添加下标的子元素

(2)层次选择器

$(“ul li”) 获取ul标签中的所有li标签
$(“ul>li”) 获取ul标签中的直接子元素li
$(“div+span”) 获取div标签的下一个兄弟span元素
$(“div~span”) 获取div标签后面的所有兄弟span元素
        //后代选择器   只要包含就行
        $("div span").css("background","red");

        //子代选择器   直系
        $("div>span").css("background","blue");

        //相邻选择器   $("#box+li")  紧跟在后面的元素,下一个兄弟元素
        $("#box+li").css("background","green");

        //$("#box~li") 兄弟选择器  后面所有的兄弟
        $("#box~li").css("background","orange");


        //方法
        $("#box").next().css("background","pink"); //下一个
        $("#box").nextAll().css("background","pink"); //下面所有的


        $("#box").prev().css("background","skyblue");//前一个
        $("#box").prevAll().css("background","skyblue");//前面所有的

        //所有的兄弟
        $("#box").siblings().css("background","yellow");

(3)基本过滤选择器

$(“ul li:first”) 获取ul中第一个li元素
$(“ul li:last”) 获取ul中最后一个li元素
$(“li:not(‘.box’)”) 获取除.box元素外的所有li元素
$(“li:even”) 获取下标为偶数的li元素
$(“li:odd”) 获取下标为奇数的li元素
$(“li:eq(下标)”) 获取li中对应下标的元素, $(“li”).eq(下标)
$(“li:gt(2)”) 获取下标大于2的li元素
$(“li:lt(2)”) 获取下标小于2的li元素
        //第一个   先获取选择器中所有的标签,在其中找第一个
        $("li:first").css("background","#ccc");
        //最后一个 先获取选择器中所有的标签,在其中找最后一个
        $("li:last").css("background","green");
        //第几个
        $("li:nth-child(3)").css("background","red");

        //通过下标获取li:eq(下标)  下标从0开始
        //$("li:eq(4)").css("background","pink");
        var n = 4;
        $("li:eq("+n+")").css("background","pink");
        $("li").eq(n).css("background","orange");

        //:not(选择器)  排除 除了
        $("li:not(.box)").css("background","red");

        //奇 偶
        $("li").css("background","#fff");
        $("li:odd").css("background","red"); //奇
        $("li:even").css("background","green");//偶


        //gt(下标):下标大于某个值选中的标签   lt(下标)
        $("li").css("background","#fff");
        $("li:lt(3)").css("background","red");
        $("li:gt(2)").css("background","gray");

(4)内容过滤选择器

E:contains() 获取包含特定内容的E元素,不考虑层级
E:empty 获取不包含任何内容的E元素,包括空格、换行、文本
E:has(span) 获取包含特定标签的E元素
E:parent 获取包含内容的E元素
        // E:contains()	获取包含特定内容的E元素,不考虑层级
        //$("div:contains(星期)").css("background","red");

        //E:has(选择器)	获取包含特定标签的E元素
        $("div:has(span)").css("background","red");

        //E:empty	获取不包含任何内容的E元素
        $("div:empty").css("background","green");

        //E:parent	获取包含内容的E元素  找是父元素的div
        $("div:parent").css("background","pink");

(5)可见性过滤选择器

根据元素可见和不可见状态来选择相应的元素

$(“li:hidden”) 获取不可见元素,不包含display:none的元素
$(“li:visible”) 获取可见元素
$("li:hidden").show(3000);
$("li:visible").css("background","red");

(6)属性过滤选择器

E[attr] 获取属性为attr的E元素
E[attr=value] 获取属性为attr并且值为value的E元素
E[attr!=value] 获取属性为attr并且值不为value的E元素
E[attr^=value] 获取属性为attr并且以value开头的E元素
E[attr$=value] 获取属性为attr并且以value结尾的E元素
E[attr*=value] 获取属性为attr并且值中包含value的E元素
// E[attr]	获取属性为attr的E元素   所有具有type属性的input标签
        $("input[type]").css("width",200);

        //E[attr=value]	获取属性为attr并且值为value的E元素  获取所有具有type属性并且值为text的input标签
        $("input[type=text]").css("display","block");

        //E[attr!=value]	获取属性为attr并且值不为value的E元素
        $("input[type!=text]").css("background","pink");

        //E[attr^=value]	获取属性为attr并且以value开头的E元素

        //E[attr$=value]	获取属性为attr并且以value结尾的E元素

        //E[attr*=value]	获取属性为attr并且值中包含value的E元素
        $("input[class*=o]").css("background","red");

(7)子元素过滤选择器

nth-child():括号中可以是数字,add,even,公式

:nth-child() 获取对应下标的元素 number,even odd 3n+1
:first-child() 获取父元素中的第一个子元素
:last-child() 获取父元素中的最后一个子元素
        //:first  : 先获取所有选择器选中的标签,在其中找第一个
        //:last  :先获取所有选择器选中的标签,在其中找最后一个
        
        $(".box1 li:first").css("background","red");
        $(".box1 li:last").css("background","red");

        //:first-child : 在父元素中找第一个子元素
        //:last-child 
        //:nth-child()  : 数字  odd even 2n 
        $(".box2 li:first-child").css("background","green");
        $(".box2 li:nth-child(4n)").css("background","pink");

(8)表单属性选择器

:enabled 获取所有可用元素
:disabled 获取所有不可用元素
option:selected 获取select选中项
:checked 获取选择框中被选中的项 单选 多选

(9)表单选择器

$(":input") 选取所有input,textarea,select,button元素
$(":text") 所有单行文本框,即:type=“text”
$(":password") 密码框
$(":radio") 单选框
$(":checkbox") 复选框
$(":submit") 提交按钮
$(":reset") 重置按钮
$(":button") 普通按钮
$(":file") 上传域
   //1.表单选择器
    console.log($(":input").length); //7
    console.log($(":input"));//获取表单元素

    console.log($(":text")); //文本框
    console.log($(":radio"));
    console.log($(":checkbox"));

    //2. :checked 获取被选中的input框
   console.log( $(":radio:checked"));
   console.log($(":checkbox:checked"));
    
   //option:selected
   console.log($("option:selected"))

7.jquery中的循环

(1)$.each()

(2)$.map()

//1.循环数组
var arr = ["今天下雪","明天下钱","后天下冰雹","下课"];

//$.map(循环对象,function(value,index){})//index:下标 key  value:值
var arr1 = $.map(arr,function(value,index){
       console.log(index,value);
       return value+"哈哈哈"; //可以有返回值,返回的内容会组成一个新的数组
});
   

//$(循环对象).map(function(){})    这个更常用
   $(arr).map(function(index,value){
            console.log(index,value);
})


//each  : 没有返回值
$.each(arr,function(index,value){
     console.log(index,value);
 });
 
 
$(arr).each(function(index,value){
        console.log(index);
})




//2.循环对象
//$.map: 有返回值  $.map(遍历的对象,function(value,index){})
//$.each(遍历的对象,function(index,value){})
  var obj = {
            "name":"翠花",
            "age":18,
            "height":160,
            "weight":88
        }
 $.each(obj,function(key,value){ //对象名一定要放在括号里
            console.log(key); //name age height weight
            console.log(value);//翠花 18  160 88
        })


 //3.循环标签
    $("div").each(function(index,elem){
            console.log(index);
            console.log(elem);//<div>3</div> DOM元素
        })

8.$.extend()

$.extend()方法用于将一个或多个对象的内容合并到目标对象

简单来说就是将多个对象的属性复制到其他对象

语法:$.extend(deep,目标对象,复制对象…)

​ deep:是否为深拷贝,深拷贝true,浅拷贝false,默认是浅拷贝

 var obj1 = {
            "user1":{
                "name":"苗苗"
            }
        }    

 var obj2 = {
        "age":18,
 }
 var obj = $.extend(true,{},obj1,obj2); //返回复制好的新对象
     

深拷贝与浅拷贝

    //1.浅拷贝: 复制的是地址,只要其中一个改了,一改全改
    var arr1 = [1,2,3,4];
    var arr2 = arr1; //复制的是地址    arr2 = arr1的地址

    arr2.push(5);
    console.log(arr1); //[1, 2, 3, 4, 5]
 
        
    //2.深拷贝:拷贝的是值
    var arr3 = [1,2,3,4];
    var arr4 = [];
    for(var i = 0;i<arr3.length;i++){
        arr4[i] = arr3[i]; 
    }
    console.log(arr4);[1,2,3,4]
    arr3.push(5);
    
    console.log(arr3);[1,2,3,4,5]
    console.log(arr4);[1,2,3,4]



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!