12.jQuery技术

一、jQuery知识点总览。 

 css()方法:
       //通过css()方法获取样式值
        let backgroundcolor = $("#one").css("backgroundColor");
        alert(backgroundcolor);
        //通过css()方法设置id为one背景色为绿色
        $("#one").css("backgroundColor","green");
属性选择器:
<script>
    $(function () {
        $("div[title]").css("background-color","red");
        $("div[title='titled']").css("background-color","red");
        $("div[title!='titled']").css("background-color","red");
        $("div[title^='tit']").css("background-color","red");
        $("div[title$='led']").css("background-color","red");
        $("div[title*='ed']").css("background-color","red");
        $("div[id][title *='es']").css("background-color","red");
    })
  </script>
 过滤选择器:
<script src="../js/jquery-3.6.0.min.js"></script>
  <script>
    $(function () {
       $('div:first').css("background-color","pink");
       $('li:first').css("background-color","pink");
       $("li:last").css("background-color","pink");
       $("li:not(.a)").css("background-color","pink");
       $("li:even").css("background-color","pink");
       $("li:odd").css("background-color","pink");
       $("li:eq(3)").css("background-color","pink");
       $("li:lt(3)").css("background-color","pink");
       $("li:gt(3)").css("background-color","pink");
       $(":header").css("background-color","pink");
    });
  </script>
表单过滤选择器:
<input type="text" disabled="disabled" value="ok">
<input type="text" value="nice">
<input type="checkbox" value="美容">美容
<input type="checkbox" value="科技">科技
<input type="checkbox" value="公司">公司
<select name="job" id="job" multiple="multiple" size="4">
  <option value="c1">程序员</option>
  <option value="c2">中级程序员</option>
  <option value="c3">高级程序员</option>
  <option value="c4">系统架构师</option>
</select>
<script>
  $(function () {
    $("input[type='text']:enabled").val("aaa");//修改输入框的内容
    $("input[type='text']:disabled").val("aaa");
    var len = $("input[type='checkbox']:checked").length;//获取选中的复选框个数
    alert(len);
    $("#job > option:selected").length;//选择器必须是 #job > option 才行,因为要获取的个数是select下拉列表下的option元素选中个数
  })
</script>
DOM-内容操作:
<script>
    $(function () {
        // 获取myinput的value值
        let val = $("#myinput").val();
        alert(val);
        let valu = $("#myinput").val("李四");//返回被修改后的对象
        alert(valu.val());
        // 获取mydiv的标签体
        let html = $("#mydiv").html();
        alert(html);
        $("#mydiv").html("aaa");
        // 获取mydiv的文本内容
        let text = $("#mydiv").text();
        alert(text);
        $("#mydiv").text("ccc");
    })
</script>
<input id="myinput" type="text" name="username" value="张三" /><br/>
<div id="mydiv" ><p><a href="#">标题标签</a></p></div>
通用属性操作:
<script>
    $(function () {
        //获取北京节点的name属性值,prop获取到的是undefined,建议使用attr
        let attr = $("#bj").attr("name");
        alert(attr);
        //设置北京节点的name属性的值为dabeijing,通过开发模式的检查,看是否修改成功
        $("#bj").attr("name","dabeijing");
        //新增北京节点的discription属性,属性值是didu
        $("#bj").attr("discription","didu");
        //删除北京节点的name属性并校验name属性是否存在
        $("#bj").removeAttr("name");
        //获取hobby的选中状态,attr获取到的是undefined(只是选中状态获取不到)
        let checked = $("#bj").prop("checked");
        alert(checked);
    })
</script>
<ul>
  <li id="bj" name="beijing" xxx="yyy">北京</li>
  <li id="tj" name="tianjin">天津</li>
</ul>
<input type="checkbox" id="hobby"/>
class类属性值操作:
<script>
    $(function () {
        //采用prop操作类属性,添加类属性增加样式(改变id=one的样式)
        $("#one").prop("class","secon");//添加属性值,会删除其他属性值(有多个属性值)
        //采用addClass,增加second属性值
        $("#one").addClass("second");//添加属性值,不会删除其他属性值(有多个属性值)
        //removeClass,删除second属性值
        $("#one").removeClass("second");//只删除指定属性值,不会全部删除
        //toggleClass,切换类属性,有就删除,没有就添加(反复操作就是切换两种样式效果)
        $("#one").toggleClass("sese");//只对指定属性值操作,不对全部操作(即不会删除全部属性值)
    });
  </script>
<div id="one" class="b1 b2">id为one</div>
CRUD:
<script>
  $(function () {
    //append方法,文档中元素对象会移动,新的元素对象才会添加
    $("#1").append("我很好!");//添加
    //appendTo方法,文档中元素对象会移动,新的元素对象才会添加
    $("#1").appendTo($("#2"));//移动到id=2的内部
    //prepend,文档中元素对象会移动,新的元素对象才会添加
    $("#1").prepend("我很好");
    //prependTo,文档中元素对象会移动,新的元素对象才会添加
    $("#2").prependTo($("#1"));
    //after,,文档中元素对象会移动,新的元素对象才会添加
    $("#1").after("我很好");
    $("#2").after($("#1"));
    //insertAfter,文档中元素对象会移动,新的元素对象才会添加
    $("#1").insertAfter($("#2"));
    //before,文档中元素对象会移动,新的元素对象才会添加
    $("#1").before($("#2"));
    //insertBefore,文档中元素对象会移动,新的元素对象才会添加
    $("#2").insertBefore($("#1"));
    //remove,删除元素对象
    $("#1").remove();
    //empty,清空所有后代元素,本节点内容也会清除,只留下元素及属性
    $("#1").empty();
    //clone(),克隆一个对象
    $("#1").append($("#1").clone());
  });
</script>
<div id="1"><h1>nice</h1>hello</div>
<h1 id="2">id是2</h1>
动画效果:
<script>
    $(function () {
      var i=0;
      while (i<1000){
        i++;
        //默认方式:
        $("#showDiv").hide("slow","swing",function () {alert("影藏了")});
        $("#showDiv").hide(10);//隐藏
        $("#showDiv").show(5000,"linear");//显示
        $("#showDiv").toggle("fast","linear");//显示和隐藏
        //滑动方式:用法和上面的一样,知识方法名不同
        $("#showDiv").slideUp("slow");//隐藏
        $("#showDiv").slideDown("slow");//显示
        $("#showDiv").slideToggle("slow");//隐藏与显示
        //淡入淡出效果方式:
        $("#showDiv").fadeOut("slow");//隐藏
        $("#showDiv").fadeIn("slow");//显示
        $("#showDiv").fadeToggle("fast");//隐藏与显示
      };
    });
  </script>
<div id="showDiv" style="width: 200px;height: 200px;background-color: pink" >
  div显示和隐藏
</div>
遍历:
<script>
  $(function () {
    //获取所有的ul下的li,jQuery对象可以当作数组使用
    let citys = $("#city li");
    //1.使用for遍历li
   for (var i = 0; i < citys.length; i++) {
      //获取内容,citys[i]获取的是js对象
      alert(citys[i].innerHTML);
      alert($(citys.get(i)).text());
    }

    //2.jQuery对象.each(callback);
    citys.each(function (index, ele) {
      //判断如果是上海,则结束循环
      if ("上海"==ele.innerHTML){
        //如果是当前function返回为false,则结束循环(break)
        //如果返回为true,则结束本次循环,继续下次循环(continue)
        // return false;
        return true;
      }
      //获取li对象,第一种方式
      // alert(this.innerHTML);
      alert($(this).text());
      //获取li对象,第二种方式,在回调函数中定义参数, index(索引) element(元素对象)
      // alert(index+" :"+ele.innerHTML);
      alert(index+" :"+$(ele).text());
    })

    //3.  $.each(object,[callback])
    $.each(citys,function (index,element) {
      alert($(element).text());
    });

    //4.  for ... of : jQuery3.0版本之后提供的方式
    for (city of citys) {
      alert($(city).text());
    }
  });
</script>
<ul id="city">
  <li>北京</li>
  <li>上海</li>
  <li>天津</li>
  <li>重庆</li>
</ul>
事件绑定:
<script>
  $(function (){
    //1.获取name对象,绑定click事件
    $("#name").click(function () {
      alert("我被点击了...")
    });
    //2.简化操作,链式编程,//给name绑定鼠标移动到元素之上事件,绑定鼠标移出事件
    $("#name").mouseover(function () {
      alert("来了...");
    }).mouseout(function () {
      alert("走了...");
    });

    $("#name").focus();//没有回调函数,触发默认行为,让文本框获得焦点
    $("#name").focus(function () {//当元素获得焦点时,触发 focus 事件。
      alert("焦点来了...");
    });
    //表单对象.submit();//让表单提交

    //3.使用on给按钮绑定单击事件click
    $("#btn").on("click",function () {
      alert("我被点击了");
    });
    //4.使用off解绑btn按钮的单击事件
      $("#btn2").click(function () {
        //结束btn的单击事件
        $("#btn").off("click");
        $("#btn").off();//没有参数,将组件的事件全部解绑
      });

      //5.获取按钮,调用toggle方法,事件切换
    $("#btn1").toggle(function () {
      //改变div背景色
      $("#mydiv").css("backgroundColor","green");
    },function () {
      //改变div背景色
      $("#mydiv").css("backgroundColor","pink");
    });
  });
</script>
<input type="button" id="btn1" value="事件切换">
<div id="myDiv" style="height: 300px;width: 300px;background-color:pink">点击按钮变成绿色,再次点击红色</div>
<input id="name" type="text" value="绑定点击事件">
<input id="btn" type="button" value="使用on绑定点击事件"/>
<input id="btn2" type="button" value="使用off解绑点击事件"/>
插件机制:扩展方法(为jQuery或jQuery对象添加方法)
<script>
  //使用jQuery插件,给jQuery对象添加2个方法,check()选中所有复选框,uncheck()取消所有选中复选框
  //1.定义jQuery的对象插件
  $.fn.extend({
    //方法名:回调函数,定义了一个check()方法。所有的jQuery对象都可以调用该方法
    check:function () {
      //让复选框选中
      //this:调用该方法的jQuery对象
      this.prop("checked",true);
    },
    uncheck:function () {
      //让复选框不选中
      this.prop("checked",false);
    }
  });

  $(function () {
    //1.获取按钮
    // $("#btn-check").check();
    //复选框对象.check();
    $("#btn-check").click(function () {
      //获取复选框对象
      $("input[type='checkbox']").check();
    });
    $("#btn-uncheck").click(function () {
      //获取复选框对象
      $("input[type='checkbox']").uncheck();
    });
  });

  //对全局方法扩展两个方法,扩展min方法,求2个值的最小值;扩展max方法,求两个值最大值;
  $.extend({
    max:function (a,b) {
      return a>=b?a:b;
    },
    min:function (a,b) {
      return a>=b?b:a;
    }
  });
  //调用全局方法
  let max = $.max(3,4);
  alert(max);
</script>
  <input id="btn-check" type="button" value="点击选中复选框" onclick="checkFn()">
  <input id="btn-uncheck" type="button" value="点击取消复选框选中" onclick="checkFn()">
<br/>
  <input type="checkbox" value="football">足球
  <input type="checkbox" value="basketball">篮球
  <input type="checkbox" value="volleyball">排球

案例一:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/jquery-3.6.0.min.js"></script>
  <script>
    $(function () {
      //案例一:隔行换色
      //$("tr:even:gt(1) > td"),这样的话是满足td的先even偶数后,再跳过2,已经不止大于2了
      $("tr:gt(1):even > td").css("backgroundColor","pink");//可以不用 > td
      $("tr:gt(1):odd > td").css("backgroundColor","yellow");
      //案例二:全选全不选,$("#box").click()就使用不了checked的值,不用这种则要在入口函数外面定义函数,需要传参数this才能使用this.checked
      $("#box").click(function () {
        $("input[type='checkbox']").prop("checked",this.checked);
      });
      // 案例三:qq表情选择
      $("tr").click(function () {
        $("table").append($(this).clone());
      });
      //案例四:下拉列表选中条目左右移动
      $("tr").click(function () {
        $("table").append(this);
      });
    });
    //案例二:全选全不选,$("#box").click()就使用不了checked的值,不用这种则要在入口函数外面定义函数,需要传参数this才能使用this.checked
    // function selectAll(obj) {
    //   $("input[type='checkbox']").prop("checked",obj.checked);
    // };

  </script>
</head>
<body>
<table border="1" align="center" id="tab1" width="800">
  <tr>
    <td colspan="5"><input type="button" value="删除"></td>
  </tr>
  <tr>
    <th><input type="checkbox" id="box" ></th>
    <th>分类ID</th>
    <th>分类名称</th>
    <th>分类描述</th>
    <th>操作</th>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>1</td>
    <td>手机数码</td>
    <td>手机数码类商品</td>
    <td><a href="#">修改</a>|<a href="#">删除</a></td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>2</td>
    <td>电脑办公</td>
    <td>电脑办公类商品</td>
    <td><a href="#">修改</a>|<a href="#">删除</a></td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>3</td>
    <td>鞋靴箱包</td>
    <td>鞋靴箱包类商品</td>
    <td><a href="#">修改</a>|<a href="#">删除</a></td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>4</td>
    <td>家居饰品</td>
    <td>家居饰品类商品</td>
    <td><a href="#">修改</a>|<a href="#">删除</a></td>
  </tr>
</table>
</body>
</html>

案例二:广告显示和隐藏。


<script>
    $(function () {
 /*       需求:
            1.当页面加载完,3秒后,自动显示广告
            2.广告显示5秒后,自动消失
          分析:
            1.使用定时器来完成:setTimeout(执行一次定时器)
            2.分析发现jQuery的显示和隐藏动画效果其实就是控制display:none属性
            3.使用show/hide方法来完成广告的显示
      */
        //显示广告
        window.setTimeout(function () {
            $("#ad").show("slow");
        },3000);
        //隐藏广告
        window.setTimeout(function () {
            $("#ad").hide("slow");
        },8000);
    });
</script>
<div id="ad" style="display: none">广告</div>
<div>正文</div>

案例三:抽奖。

<script>
  $(function () {
    /*
         分析:
              1.给开始按钮绑定单击事件
                  1.1定义循环定时器
                  1.2切换小相框的src属性
                      * 定义数组,存放图片资源路径
                      * 生成随机数,数组索引
              2.给结束按钮绑定单击事件
                   1.1停止单击事件
                   1.2给大相框设置src属性
     */
      //处理按钮是否可以使用的效果,防止按钮多次点击,出现bug
      $("#startID").prop("disabled",false);//按钮可用
      $("#stopID").prop("disabled",true);//按钮不可用
      let startID;//开始定时器的id
      var arr=["../img/img_1.png","../img/2.png","../img/3.png"];
    $("#startID").click(function () {
        //处理按钮是否可以使用的效果,防止按钮多次点击,出现bug
        $("#startID").prop("disabled",true);//按钮可用
        $("#stopID").prop("disabled",false);//按钮不可用
      //1.1定义循环定时器
      startID = setInterval(function () {
          //1.2生成随机角标,0-2
          var index=Math.floor(Math.random()*3);//0.000-0.999->*2->0.0->2.999
          //1.3设置小相框的src属性
          $("#imgID").prop("src",arr[index]);
      },50);
    });
    $("#stopID").click(function () {
        //处理按钮是否可以使用的效果,防止按钮多次点击,出现bug
        $("#startID").prop("disabled",false);//按钮可用
        $("#stopID").prop("disabled",true);//按钮不可用
        //1.1停止定时器
        clearInterval(startID);
        //1.2给大相框设置src属性
        let src = $("#imgID").prop("src");
        $("#daimgID").prop("src",src).hide();//先隐藏
        //显示1秒之后
        $("#daimgID").show(1000);
    });
  });
</script>
<img id="imgID" src="../img/3.png" style="width: 100px;height: 100px">
<input id="startID" type="button" value="开始抽奖">
<input id="stopID" type="button" value="停止抽奖">
<img id="daimgID" src="../img/3.png" style="width: 600px;height: 600px;float: right">

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值