21-jQuery

快速入门

jquery介绍

​ jQuery 是一个 JavaScript 库,内部封装了很多js方法供我们使用,能够大大简化开发提高开发效率。

1.使用步骤

第一步:将jquery-3.3.1.min.js复制到module中

第二步:在页面使用script标签引入jquery文件

第二步:使用jquery中提供的对象和方法

2.代码演示

<body>
  <div id="div">我是div</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  // JS方式,通过id属性值来获取div元素
  let jsDiv = document.querySelector("#div");
  //alert(jsDiv.innerHTML);

  // jQuery方式,通过id属性值来获取div元素
  let jqDiv=$("#div");
  alert(jqDiv.html())
</script>

基本语法

1 jquery核心函数$()(重点)

作用1:$(“css选择器”):根据css选择器查找元素
// jQuery方式,通过id属性值来获取div元素
let jqDiv=$("#div");
alert(jqDiv.html())
作用2:$(js对象):将js对象转换成jquery对象
// jQuery方式,通过id属性值获取div元素
let jqDiv=$("#div");
//alert(jqDiv.innerHTML);//❌,打印undefined
// 将 jQuery对象转换为JS对象
//let jsDiv=jqDiv[0];   //✅
let jsDiv=jqDiv.get(0); //✅
alert(jsDiv.innerHTML); //✅
作用3:$(function(){}):页面加载完成事件,相当于window.οnlοad=function

2 js对象和jquery转换(重点)

2.1 js对象和jquery对象概念
  1. js对象:通过原生js方法获取到的对象就是js对象,例如:document.getElementByxxx(),document.querySelectorXxx();
  2. jquery对象:通过jquery核心函数**$()**得到的对象就是jquery对象
2.2 js对象和jquery对象的区别

​ 两种对象可以表示同一个元素,但是不是同一个对象,方法和属性不能混着调用。

2.3 js对象和jquery对象相互转换(重要)
js对象------>jquery对象:let jquery对象=$(js对象);
jquery对象------>js对象:通过索引转换,
例如:jquery对象[索引]或者jquery对象.get(索引),如果只有一个元素,索引就是0
2.4 代码演示
<body>
  <div id="div">我是div</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    // JS方式,通过id属性值获取div元素
    let jsDiv = document.getElementById("div");
    alert(jsDiv.innerHTML);
    //alert(jsDiv.html());  JS对象无法使用jQuery里面的功能

    // 将 JS 对象转换为jQuery对象
    let jq = $(jsDiv);
    alert(jq.html());

    // jQuery方式,通过id属性值获取div元素
    let jqDiv = $("#div");
    alert(jqDiv.html());
    // alert(jqDiv.innerHTML);   jQuery对象无法使用JS里面的功能

    // 将 jQuery对象转换为JS对象
    let js = jqDiv[0];
    alert(js.innerHTML);
</script>

3.事件的简单绑定方式(重点)

注意

window.onload  和 $(function) 区别
        * window.onload 只能定义一次,如果定义多次,后边的会将前边的覆盖掉
        * $(function)可以定义多次的。
<script>
  //页面加载完成
  $(function () {
    //单击事件
    $("#btn").click(function () {
      alert("hello");
    });
    //失去焦点事件
    /*$("#input").blur(function () {
            alert("输入框失去到焦点了...")
        })*/

    //绑定表单提交事件
    $("#form").submit(function () {
      return true;
    });
  });
</script>
<body>
  <form id="form" action="01-对象转换.html" method="get">
    <input type="button" id="btn" value="点我">
    <br>
    <input type="text" id="input"  name="username">
    <input type="submit">
  </form>
</body>

4.事件的绑定和解绑

说明:on(“事件名称”,要执行的函数对象)方法可以用来绑定任意事件,off(“事件名称”)方法解绑事件,不传参表示解绑所有事件。

<body>
  <input type="button" id="btn1" value="点我">
  <input type="button" id="btn2" value="解绑">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  //给btn1按钮绑定单击事件
  $("#btn1").on("click",function () {
    alert("hello 黑马");
  });

  //通过btn2解绑btn1的单击事件
  $("#btn2").click(function () {
    //对第一个按钮解绑事件
    $("#btn1").off("click"); //解绑click单击事件
    //$("#btn1").off(); //解绑所有事件
  })
</script>

5.jquery事件链式绑定

<body>
  <div id="div">我是div</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  //需求:鼠标移到div上,背景色是粉色,移出背景色是白色
  //方式一 单独定义
  ///鼠标移入
  /*$("#div").mouseover(function () {
        //this就是当前div元素,但是是一个js对象
        this.style.backgroundColor="pink";
    });*/
  //鼠标移出
  /* $("#div").mouseout(function () {
        //this就是当前div元素,但是是一个js对象
        this.style.backgroundColor="white";
    })*/
  //方式二 链式定义
  $("#div").mouseover(function () {
    //this就是当前div元素,但是是一个js对象
    this.style.backgroundColor="green";
  }).mouseout(function () {
    //this就是当前div元素,但是是一个js对象
    this.style.backgroundColor="white";
  })
</script>

6.遍历

<body>
  <input type="button" id="btn" value="遍历列表项">
  <ul>
    <li>传智播客</li>
    <li>黑马程序员</li>
    <li>传智专修学院</li>
  </ul>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  //获取所有的li元素
  let lis=$("li");
  //方式一:传统方式
  for (let i = 0; i <lis .length; i++) {
    // console.log(lis[i].innerHTML);  //js方式
    //如果文本内容是"黑马程序员",则跳过,继续下一次循环
    if($(lis[i]).html()=="黑马程序员"){
      continue
    }
    console.log($(lis[i]).html());    //jquery方式
  }
  console.log("---------------------");
    
  //方式二:对象.each()方法
  lis.each(function (index,element) {
    /*
            this表示当前元素,但是是一个js对象
            index 表示索引
            element:表示当前元素,和this含义一样,是一个js对象
            在each遍历中不能使用continue关键字,使用return true代替continue,作用和continue一样
            在each遍历中不能使用break关键字,使用return false代替break,作用和break一样
        */
    //console.log(this.innerHTML);  //js方式
    //如果文本内容是"黑马程序员",则跳过,继续下一次循环
    /*if($(this).html()=="黑马程序员"){
            return true; //在each遍历中不能使用continue关键字,使用return true代替continue,作用和continue一样
        }*/
      
    //如果文本内容是"黑马程序员",则结束循环
    if($(this).html()=="黑马程序员"){
      return false //在each遍历中不能使用break关键字,使用return false代替break,作用和break一样
    }
    console.log($(this).html()+","+index);//jquery方式 
  });
  console.log("---------------------");
    
  //方式三:$.each()方法
  /*$.each(lis,function (index,element) {
        /!*
             this表示当前元素,但是是一个js对象
             index 表示索引
             element:表示当前元素,和this含义一样,是一个js对象
         *!/
        //console.log(this.innerHTML);  //js方式
        console.log($(this).html()+","+index);//jquery方式
    });
    console.log("---------------------");*/

  //方式四:for of 语句遍历
  for (let li of lis) {
    //console.log(li.innerHTML);  //js方式
    //如果文本内容是"黑马程序员",则结束循环
    if($(li).html()=="黑马程序员"){
      break;
    }
    console.log($(li).html());    //jquery方式
  }
</script>

jquery选择器

1.基本选择器(重点)

<body>
  <div id="div1">div1</div>
  <div class="cls">div2</div>
  <div class="cls">div3</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  //1.元素选择器   $("元素的名称")  获取所有匹配标签名称的元素
    let divs = $("div");
    //alert(divs.length);

    //2.id选择器    $("#id的属性值")
    let div1 = $("#div1");
    //alert(div1);

    //3.类选择器     $(".class的属性值")
    let cls = $(".cls");
    alert(cls.length);
</script>

2.层级选择器

<body>
    <div>
        <span>s1
            <span>s1-1</span>
            <span>s1-2</span>
        </span>
        <span>s2</span>
    </div>

    <div></div>
    <p>p1</p>
    <p>p2</p>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    // 1. 后代选择器 $("A B");      A下的所有B(包括B的子级)
    let spans1 = $("div span");
    //alert(spans1.length);

    // 2. 子选择器   $("A > B");    A下的所有B(不包括B的子级)
    let spans2 = $("div > span");
    //alert(spans2.length);

    // 3. 兄弟选择器 $("A + B");    A相邻的下一个B
    let ps1 = $("div + p");
    //alert(ps1.length);

    // 4. 兄弟选择器 $("A ~ B");    A相邻的所有B
    let ps2 = $("div ~ p");
    alert(ps2.length);
    
</script>

3.属性选择器

<body>
  <input type="text">
  <input type="password">
  <input type="password">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  //1.属性名选择器   $("元素[属性名]")
    let in1 = $("input[type]");//3
    //alert(in1.length);

    //2.属性值选择器   $("元素[属性名=属性值]")
    let in2 = $("input[type='password']");//2
    alert(in2.length);
</script>

4.过滤选择器

在这里插入图片描述

<body>
  <div>div1</div>
  <div id="div2">div2</div>
  <div>div3</div>
  <div>div4</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  // 1.首元素选择器	$("A:first");
    let div1 = $("div:first");
    //alert(div1.html());

    // 2.尾元素选择器	$("A:last");
    let div4 = $("div:last");
    //alert(div4.html());

    // 3.非元素选择器	$("A:not(B)");
    let divs1 = $("div:not(#div2)");
    //alert(divs1.length);

    // 4.偶数选择器	    $("A:even");
    let divs2 = $("div:even");div1  div 3
    //alert(divs2.length);
    //alert(divs2[0].innerHTML);
    //alert(divs2[1].innerHTML);

    // 5.奇数选择器	    $("A:odd");
    let divs3 = $("div:odd");// div2   div4
    //alert(divs3.length);
    //alert(divs3[0].innerHTML);
    //alert(divs3[1].innerHTML);

    // 6.等于索引选择器	 $("A:eq(index)");
    let div3 = $("div:eq(2)");//div3
    //alert(div3.html());

    // 7.大于索引选择器	 $("A:gt(index)");
    let divs4 = $("div:gt(1)");//div3 div4
    //alert(divs4.length);
    //alert(divs4[0].innerHTML);
    //alert(divs4[1].innerHTML);

    // 8.小于索引选择器	 $("A:lt(index)");
    let divs5 = $("div:lt(2)");//div1 div2
    alert(divs5.length);
    alert(divs5[0].innerHTML);
    alert(divs5[1].innerHTML);
</script>

5.表单属性选择器

<body>
    <input type="text" disabled>
    <input type="text" >
    <input type="radio" name="gender" value="men" checked><input type="radio" name="gender" value="women"><input type="checkbox" name="hobby" value="study" checked>学习
    <input type="checkbox" name="hobby" value="sleep" checked>睡觉
    <select>
        <option>---请选择---</option>
        <option selected>本科</option>
        <option>专科</option>
    </select>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    // 1.可用元素选择器  $("A:enabled");
    let ins1 = $("input:enabled");//5
    //alert(ins1.length);

    // 2.不可用元素选择器  $("A:disabled");
    let ins2 = $("input:disabled");//1
    //alert(ins2.length);

    // 3.单选/复选框被选中的元素  $("A:checked");
    let ins3 = $("input:checked");//3
    //alert(ins3.length);
    //alert(ins3[0].value);
    //alert(ins3[1].value);
    //alert(ins3[2].value);

    // 4.下拉框被选中的元素   $("A:selected");
    let select = $("select option:selected");//1
    alert(select.html());
    
</script>

DOM操作(重要)

1.操作文本(重要)

  • html():相当于之前的innerHTML属性

​ 传递参数表示设置内容体html代码,不传参表示获取内容体html代码

  • text():相当于之前的innerText属性

​ 传递参数表示设置内容纯文本,不传参表示获取内容体纯文本。

  • val():相当于之前的value属性

​ 传递参数表示设置输入框中的内容,不传参表示获取输入框中的内容。

1. 通用属性操作
			1. attr(): 获取/设置元素的属性
			2. removeAttr():删除属性
			3. prop():获取/设置元素的属性
			4. removeProp():删除属性

2.attr和prop区别?
			1. 如果操作的是元素的固有属性,则建议使用prop
			2. 如果操作的是元素自定义的属性,则建议使用attr
3.class属性操作
			1. addClass():添加class属性值
			2. removeClass():删除class属性值
			3. toggleClass():切换class属性
				* toggleClass("one"): 
					* 判断如果元素对象上存在class="one",则将属性值one删除掉。  如果元素对象上不存在class="one",则添加
			4. css():    
<body>
    <div id="div">我是div</div>
    <input type="button" id="btn1" value="获取div的文本">
    <input type="button" id="btn2" value="设置div的文本">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
     //1. html()   获取标签的文本内容
     $("#btn1").click(function(){
         //获取div标签的文本内容
         let value = $("#div").html();
         alert(value);
     });

     //2. html(value)   设置标签的文本内容,解析标签
     $("#btn2").click(function(){
         //设置div标签的文本内容
         //$("#div").html("我真的是div");
         $("#div").html("<b>我真的是div</b>");
     });
</script>

注意

对于双标签,设置里面的文本就使用html()
对于input这种标签,设置里面的文本值就用val()
<body>
    <div id="div">你是傻瓜</div>
    <input type="text" id="in1">
<script src="../js/jquery-3.3.1.min.js"></script>
<script>
    //jq方式
    $("#div").html("哈哈哈哈哈哈哈");
    // $("#in1").html("黑马程序员");//不好使
    $("#in1").val("黑马程序员");//不好使
    //js方式
    // document.getElementById("in1").value="黑马程序员";
    // document.getElementById("div").innerHTML="哇哇哇哇哇哇哇哇哇哇哇哇";
</script>
</body>

2.操作标签CRUD(了解)

<body>
  <div id="div"></div>
  <input type="button" id="btn1" value="添加一个span到div"> <br><br><br>
  <input type="button" id="btn2" value="将加油添加到城市列表最下方"> &nbsp;&nbsp;&nbsp;
  <input type="button" id="btn3" value="将加油添加到城市列表最上方"> &nbsp;&nbsp;&nbsp;
  <input type="button" id="btn4" value="将雄起添加到上海下方"> &nbsp;&nbsp;&nbsp;
  <input type="button" id="btn5" value="将雄起添加到上海上方"> &nbsp;&nbsp;&nbsp;
  <ul id="city">
    <li id="bj">北京</li>
    <li id="sh">上海</li>
    <li id="gz">广州</li>
    <li id="sz">深圳</li>
  </ul>
  <ul id="desc">
    <li id="jy">加油</li>
    <li id="xq">雄起</li>
  </ul>  <br><br><br>
  <input type="button" id="btn6" value="将雄起删除"> &nbsp;&nbsp;&nbsp;
  <input type="button" id="btn7" value="将描述列表全部删除"> &nbsp;&nbsp;&nbsp;
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  /*
        1. $("html代码")   创建指定元素
        内部插入:有子父关系
            2. append(element)   添加成最后一个子元素,由添加者对象调用
            3. appendTo(element) 添加成最后一个子元素,由被添加者对象调用

            4. prepend(element)  添加成第一个子元素,由添加者对象调用
            5. prependTo(element) 添加成第一个子元素,由被添加者对象调用
        外部插入:
            6. before(element)    添加到当前元素的前面,两者之间是兄弟关系,由添加者对象调用
            7. after(element)     添加到当前元素的后面,两者之间是兄弟关系,由添加者对象调用

            8. remove()           删除指定元素(自己移除自己)
            9. empty()            清空指定元素的所有子元素
    */

  // 按钮一:添加一个span到div
  $("#btn1").click(function () {
    //$("#div").append("<span>传智播客</span>")
    $("<span>传智播客</span>").appendTo($("#div"));
  });
  //按钮二:将加油添加到城市列表最下方
  $("#btn2").click(function () {
    // $("#city").append($("#jy"));
    $("#jy").appendTo($("#city"));
  });
  //按钮三:将加油添加到城市列表最上方
  $("#btn3").click(function () {
    // $("#city").prepend($("#jy"));
    $("#jy").prependTo($("#city"));
  });

  //按钮四:将雄起添加到上海下方
  $("#btn4").click(function () {
    $("#sh").after($("#xq"));
  });

  //按钮五:将雄起添加到上海上方
  $("#btn5").click(function () {
    $("#sh").before($("#xq"));
  });
  //按钮六:将雄起删除
  $("#btn6").click(function () {
    $("#xq").remove();
  });

  //按钮七:将描述列表全部删除
  $("#btn7").click(function () {
    $("#desc").empty();
  });
</script>

3.操作样式(了解)

  • css(name):根据样式名获取样式值
  • css(name,value):设置一组样式
  • css({name:value,name:value,…}) :设置CSS多组样式,也可以使用addClass()通过添加clas属性得到样式。
<body>
  <div style="border: 1px solid red;" id="div">我是div</div>
  <input type="button" id="btn1" value="获取div的样式"> &nbsp;&nbsp;
  <input type="button" id="btn2" value="设置div的背景色为蓝色">&nbsp;&nbsp;
  <br><br><br>
  <input type="button" id="btn3" value="给div设置cls1样式"> &nbsp;&nbsp;
  <input type="button" id="btn4" value="给div删除cls1样式"> &nbsp;&nbsp;
  <input type="button" id="btn5" value="给div设置或删除cls1样式"> &nbsp;&nbsp;
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
  // 1.css(name)   获取css样式
  $("#btn1").click(function () {
    console.log($("#div").css("border"));
  });
  // 2.css(name,value)   设置CSS一组样式
  /*$("#btn2").click(function () {
        //设置div的背景色为蓝色
        // $("#div").css("background-color","blue");
        $("#div").css("backgroundColor","blue");
    });*/
  // 2.css({name:value,name:value,...})   设置CSS多组样式
  $("#btn2").click(function () {
    //设置div的字体30px,颜色pink
    //  $("#div").css("fontSize","30px").css("color","pink")
    $("#div").css({"fontSize":"50px","color":"green"});
  });

  // 3.addClass(value)   给指定的对象添加样式类名
  $("#btn3").click(function () {
    $("#div").addClass("cls1")
  });
  // 4.removeClass(value)  给指定的对象删除样式类名
  $("#btn4").click(function () {
    $("#div").removeClass("cls1")
  });
  // 5.toggleClass(value)  如果没有样式类名,则添加。如果有,则删除
  $("#btn5").click(function () {
    $("#div").toggleClass("cls1")
  });
</script>

4.操作属性(重要)

说明:在操作checked、selected属性时推荐使用prop()方法,操作其他属性使用attr()方法

<body>
    <input type="text" id="username"> 
    <br>
    <input type="button" id="btn1" value="获取输入框的id属性">  &nbsp;&nbsp;
    <input type="button" id="btn2" value="给输入框设置value属性">
    <br><br>

    <input type="radio" id="gender1" name="gender"><input type="radio" id="gender2" name="gender"><br>
    <input type="button" id="btn3" value="选中女">
    <br><br>
    
    <select>
        <option>---请选择---</option>
        <option id="bk">本科</option>
        <option id="zk">专科</option>
    </select>
    <br>
    <input type="button" id="btn4" value="选中本科">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    // 1.attr(name,[value])   获得/设置属性的值
    //按钮一:获取输入框的id属性
    $("#btn1").click(function(){
        alert($("#username").attr("id"));
    });
    
    //按钮二:给输入框设置value属性
    $("#btn2").click(function(){
        $("#username").attr("value","hello...");
    });
    

    // 2.prop(name,[value])   获得/设置属性的值(checked,selected)
    //按钮三:选中女
    $("#btn3").click(function(){
        $("#gender2").prop("checked",true);
    });

    //按钮四:选中本科
    $("#btn4").click(function(){
        $("#bk").prop("selected",true);
    });
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值