jQuery基础

1.什么是jQuery

jQuery:是一个简洁的、快速的Javascript库。该库中提供了大量可以操作页面元素的工具。

目的在简化了HTML文档的遍历、事件交互处理、动画处理以及封装了Ajax。

2006年发布,最新版本为3.7.1。

2.测试jQuery库

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>初始jQuery</title>
    <!-- 导入jQuery -->
    <script type="text/javascript" src="jquery-3.7.1.js"></script>
    <script type="text/javascript">
        //$:调用jQuery库
        $(document).ready(function(){
            alert('Hello jQuery')
        })
    </script>
</head>
<body>
</body>
</html>

3.操作元素对象

元素对象的加载过程---jQuery与Dom操作元素对象的区别

1.使用源生的ES操作元素对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>初识jQuery</title>
    <script type="text/javascript" src="jquery-3.7.1.js"></script>
    <script type="text/javascript">
        function a(){
            alert("a")
        }
        function b(){
            alert("b")
        }
        window.onload = a
        window.onload = b
    </script>
</head>
<body>
</body>
</html>

2.使用jQuery操作元素对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>初识jQuery</title>
    <script type="text/javascript" src="jquery-3.7.1.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            alert("a")
        })
        $(document).ready(function(){
            alert("b")
        })
    </script>
</head>
<body>
</body>
</html>

4.对于事件的操作

1.ES中挂事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>初识jQuery</title>
    <script type="text/javascript" src="jquery-3.7.1.js"></script>
    <script type="text/javascript">
        function clickMe(){
            alert("点我了")
        }
    </script>
</head>
<body>
    <p onclick="clickMe()">点击我</p>
</body>
</html>

2.使用jQuery挂事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>初识jQuery</title>
    <script type="text/javascript" src="jquery-3.7.1.js"></script>
</head>
<body>
    <p class="demo">点击我jQuery</p>
    <script>
        $(".demo").click(function(){
            alert("点我了jQuery")
        })
    </script>
</body>
</html>

5.导航栏

1.导航菜单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>导航栏</title>
</head>
<body>
    <div class="box">
        <ul class="menu">
            <li class="level1">
          <a href="#none">衬衫</a>
            <ul class="level2">
              <li><a href="#none">短袖衬衫</a></li>
              <li><a href="#none">长袖衬衫</a></li>
              <li><a href="#none">短袖T恤</a></li>
              <li><a href="#none">长袖T恤</a></li>
            </ul>
            </li>
            <li class="level1">
          <a href="#none">卫衣</a>
            <ul class="level2">
              <li><a href="#none">开襟卫衣</a></li>
              <li><a href="#none">套头卫衣</a></li>
              <li><a href="#none">运动卫衣</a></li>
              <li><a href="#none">童装卫衣</a></li>
            </ul>
            </li>
            <li class="level1">
          <a href="#none">裤子</a>
            <ul class="level2">
              <li><a href="#none">短裤</a></li>
              <li><a href="#none">休闲裤</a></li>
              <li><a href="#none">牛仔裤</a></li>
              <li><a href="#none">免烫卡其裤</a></li>
            </ul>
            </li>
        </ul>
      </div>
</body>
</html>

2. CSS样式代码

<style>
    body{
        margin: 0;
        padding: 0 0 12px 0;
        font-size: 12px;
        line-height: 22px;
        background: #fff;
    }
    ul,li{
        margin: 0;
        padding: 0;
        list-style-type: none;/*设置列表项无默认格式*/
    }
    a{
        color: #00007F;
        text-decoration: none;/*设置超链接文本无下划线*/
    }
    a:hover{
        color: #bd0a01;
        text-decoration: underline;/*设置超链接文本,划入时有下划线*/
    }
    .box{
        width: 150px;
        margin: 0 auto;
    }
    .menu{
        overflow: hidden;/*隐藏溢出的部分*/
        border-color: #C4D5DF;
        border-style: solid;
        border:0 1px 1px 1px;
    }
    .menu li.level1 a{
        display: block;/*块级元素,独占一行*/
        height: 28px;
        line-height: 28px;
        background: #ebf3f8;
        font-weight: 700;
        color:#5893B7;
        text-indent: 14px;/*文本缩进*/
        border-top: 1px solid #C4D5DF;
    }
    .menu li.level1 a:hover{
        text-decoration: none;
    }
    .menu li.level1 a.current{
        background: #B1D7EF;
    }
    .menu li ul{
        overflow: hidden;
    }
    .menu li ul.level2{
        display: block;
    }
    .menu li ul.level2 li a{
        display: block;/*设置块级元素*/
        height: 28px;
        line-height: 28px;
        background: #fff;
        font-weight: 400;
        color:#42556B;
        text-indent: 18px;
        border-top: 0px solid #fff;
        overflow: hidden;
    }
    .menu li ul.level2 li a:hover{
        color:#f60;
    }
</style>

3. 菜单展开和折叠功能

用jQuery编写,实现多级菜单的展开和折叠功能。

当点击一个<a>标签时,显示它的下一个兄弟<ul>

同时,隐藏所有其他同级<li>中的<ul>

<script src="jquery-3.7.1.js"></script>
<script>
    $(document).ready(function(){
        //> : level1 下所包含的所有 a
        $(".level1 > a").click(function(){
            当前点击的元素的子元素显示,它父级的兄弟级别的子元素时a的元素的下一级隐藏
            $(this).next().show().parent().siblings().children("a").next().hide()
        })
    })
</script>

6.操作CSS样式

CSS称为层叠样式表,默认情况下,div没有任何效果,需要css样式对其美化。

CSS中提供了大了的样式。由于css是浏览器默认支持的,所以不需要导入任何工具,可以直接在浏览器中解释执行。

1.原生JavaScript代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>操作CSS样式 - 不使用jQuery</title>
</head>
<body>
    <div id="tt">CSS称为层叠样式表,默认情况下,div没有任何效果,需要css样式对其美化,在css中提供了大了的样式,
        由于css是浏览器默认支持的,所以不需要导入任何工具,可以直接在浏览器中解释执行。</div>
    <script>
        document.getElementById("tt").style.color = "#999";
    </script>
</body>
</html>

2.使用jQuery的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>操作CSS样式 - 使用jQuery</title>
    <script src="jquery-3.7.1.js"></script>
</head>
<body>
    <div id="tt">CSS称为层叠样式表,默认情况下,div没有任何效果,需要css样式对其美化,在css中提供了大了的样式,
        由于css是浏览器默认支持的,所以不需要导入任何工具,可以直接在浏览器中解释执行。</div>
    <script>
        $("#tt").css("color", "#999");
    </script>
</body>
</html>

7.操作表格

表格中如果每行最后一个单元格中的checkbox没有被禁用,则为红色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>操作表格</title>
    <script src="jquery-3.7.1.js"></script>
    <script>
        $("document").ready(function(){
            $("#table>tbody>tr:has(td:has(:checkbox:enabled))").css("background","red")
        })
    </script>   
</head>
<body>
    <table id="table">
        <tbody>
            <tr>
                <td>第1行</td>
                <td>第1行</td>
                <td>第1行</td>
                <td>第1行</td>
                <td>第1行<input type="checkbox" disabled="disabled"/></td>
            </tr>
            <tr>
                <td>第2行</td>
                <td>第2行</td>
                <td>第2行</td>
                <td>第2行</td>
                <td>第2行<input type="checkbox" /></td>
            </tr>
            <tr>
                <td>第3行</td>
                <td>第3行</td>
                <td>第3行</td>
                <td>第3行</td>
                <td>第3行<input type="checkbox" disabled="disabled"/></td>
            </tr>
            <tr>
                <td>第4行</td>
                <td>第4行</td>
                <td>第4行</td>
                <td>第4行</td>
                <td>第4行<input type="checkbox" /></td>
            </tr>
        </tbody>
    </table>

</body>
</html>

8.jQuery选择器

基本选择器

  • #id:选择特定id的元素。
  • .class:选择特定class的所有元素。
  • element:选择特定标签名的所有元素。
  • *:选择所有元素。
  • element1, #id:选择特定标签名和特定id的元素。

层次选择器

  • ancestor descendant:选择特定祖先元素内的所有后代元素。
  • parent > child:选择特定父元素的直接子元素。
  • prev + next:选择特定元素后面的下一个兄弟元素。
  • prev ~ siblings:选择特定元素后面的所有兄弟元素。

基本过滤选择器

  • :first:选择第一个元素。
  • :last:选择最后一个元素。
  • :not(selector):选择不匹配选择器的所有元素。
  • :even:选择索引值为偶数的元素。
  • :odd:选择索引值为奇数的元素。
  • :eq(index):选择索引值等于index的元素。
  • :gt(index):选择索引值大于index的元素。
  • :lt(index):选择索引值小于index的元素。
  • :header:选择所有标题元素(<h1><h6>)。
  • :animated:选择当前正在执行动画的所有元素。
  • :focus:选择当前获取焦点的所有元素。

内容过滤选择器

  • :contains(text):选择包含特定文本的元素。
  • :empty:选择不包含子元素或文本的空元素。
  • :has(selector):选择包含特定选择器的元素。
  • :parent:选择包含子元素或文本的元素。

属性选择器

  • [attribute]:选择包含特定属性的元素。
  • [attribute=value]:选择属性值等于特定值的元素。
  • [attribute!=value]:选择属性值不等于特定值的元素(没有该属性的元素也将被选中)。
  • [attribute^=value]:选择属性值以特定值开头的元素。
  • [attribute$=value]:选择属性值以特定值结尾的元素。
  • [attribute*=value]:选择属性值包含特定值的元素。
  • [attribute1][attribute2=value],选择同时满足多个条件的元素。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style rel="stylesheet">
div,span,p {
  width:140px;
  height:140px;
  margin:5px;
  background:#aaa;
  border:#000 1px solid;
  float:left;
  font-size:17px;
  font-family:Verdana;
  /*自定义字体*/
}
div.mini { 
  width:55px;
  height:55px;
  background-color: #aaa;
  font-size:12px;
}
div.hide { 
  display:none;
}
</style>
<script type="text/javascript" src="jquery-3.7.1.js" ></script>
<script type="text/javascript" src="assist.js"></script>
<script>
  $(document).ready(function(){
    /*基本选择器*/
    //选择id为one的元素
    $("#btn1").click(function(){
      $('#one').css("background","#bfa")
    })
    //选择class值为mini的元素
    $("#btn2").click(function(){
      $('.mini').css("background","#bfa")
    })
    //选择元素名是div的所有元素
    $("#btn3").click(function(){
      $('div').css("background","#bfa")
    })
    //选择所有元素
    $("#btn4").click(function(){
      $('*').css("background","#bfa")
    })
    //选择所有的span元素和id为two的元素
    $("#btn5").click(function(){
      $('span,#two').css("background","#bfa")
    })

    /*层次选择器*/
    //选择body内所有div元素
    $("#btn6").click(function(){
      $('body div').css("background","#bfa")
    })
    //在body内,选择子元素是div的
    $("#btn7").click(function(){
      $('body>div').css("background","#bfa")
    })
    //选择所有class为one的下一个duv元素
    $("#btn8").click(function(){
      $('.one + div').css("background","#bfa")
    })
    //选择 id为two的元素后面的所有div兄弟元素
    $("#btn9").click(function(){
      $('#two ~ div').css("background","#bfa")
    })

    /*基本过滤选择器*/
    //选择第一个div元素
    $("#btn10").click(function(){
      $('div:first').css("background","#bfa")
    })
    //选择最后一个div元素
    $("#btn11").click(function(){
      $('div:last').css("background","#bfa")
    })
    //选择class不为one的 所有div元素
    $("#btn12").click(function(){
      $('div:not(.one)').css("background","#bfa")
    })
    //选择索引值为偶数 的div元素
    $("#btn13").click(function(){
      $('div:even').css("background","#bfa")
    })
    //选择索引值为奇数 的div元素
    $("#btn14").click(function(){
      $('div:odd').css("background","#bfa")
    })
    //选择索引值等于3的元素
    $("#btn15").click(function(){
      $('div:eq(3)').css("background","#bfa")
    })
    //选择索引值大于3的元素
    $("#btn16").click(function(){
      $('div:gt(3)').css("background","#bfa")
    })
    //选择索引值小于3的元素
    $("#btn17").click(function(){
      $("div:lt(3)").css("background","#bfa")
    })
    //选择所有的标题元素
    $("#btn18").click(function(){
      $(":header").css("background","#bfa")
    })
    //选择当前正在执行动画的所有元素
    $("#btn19").click(function(){
      $(":animated").css("background","#bfa")
    })
    //选择当前获取焦点的所有元素
    $("#btn20").click(function(){
      $(":focus").css("background","#bfa")
    })

    /*内容过滤选择器*/
    //选取含有文本“di”的div元素
    $("#btn21").click(function(){
      $("div:contains(di)").css("background","#bfa")
    })
    //选取不包含子元素(或者文本元素)的div空元素
    $("#btn22").click(function(){
      $("div:empty").css("background","#bfa")
    })
    //选取含有class为mini元素 的div元素
    $("#btn23").click(function(){
      $("div:has('.mini')").css("background","#bfa")
    })
    //选取含有子元素(或者文本元素)的div元素
    $("#btn24").click(function(){
      $("div:parent").css("background","#bfa")
    })

    /*属性选择器*/
    //选取含有 属性title 的div元素
    $("#btn25").click(function(){
      $("div[title]").css("background","#bfa")
    })
    //选取 属性title值等于“test”的div元素
    $("#btn26").click(function(){
      $("div[title=test]").css("background","#bfa")
    })
    //选取 属性title值不等于“test”的div元素(没有属性title的也将被选中)
    $("#btn27").click(function(){
      $("div[title!=test]").css("background","#bfa")
    })
    //选取 属性title值 以“te”开始 的div元素
    $("#btn28").click(function(){
      $("div[title^=te]").css("background","#bfa")
    })
    //选取 属性title值 以“est”结束 的div元素
    $("#btn29").click(function(){
      $("div[title$=est]").css("background","#bfa")
    })
    //选取 属性title值 含有“es”的div元素
    $("#btn30").click(function(){
      $("div[title*=es]").css("background","#bfa")
    })
    //组合属性选择器,首先选取有属性id的div元素,然后在结果中 选取属性title值 含有“es”的元素
    $("#btn31").click(function(){
      $("div[id][title*=es]").css("background","#bfa")
    })
  })
</script>


</head>
<body>
<h3>基本选择器.</h3>
<input type="button" value="选择 id为 one 的元素." id="btn1"/>  
<input type="button" value="选择 class 为 mini 的所有元素." id="btn2"/>
<input type="button" value="选择 元素名是 div 的所有元素." id="btn3"/>
<input type="button" value="选择 所有的元素." id="btn4"/>
<input type="button" value="选择 所有的span元素和id为two的元素." id="btn5"/>
<h3>层次选择器.</h3>
<input type="button" value="选择 body内的所有div元素." id="btn6"/>
<input type="button" value="在body内,选择子元素是div的。" id="btn7"/>
<input type="button" value="选择 所有class为one 的下一个div元素." id="btn8"/>
<input type="button" value="选择 id为two的元素后面的所有div兄弟元素." id="btn9"/>
<h3>基本过滤选择器.</h3>
<input type="button" value="选择第一个div元素." id="btn10"/>
<input type="button" value="选择最后一个div元素." id="btn11"/>
<input type="button" value="选择class不为one的 所有div元素." id="btn12"/>
<input type="button" value="选择索引值为偶数 的div元素." id="btn13"/>
<input type="button" value="选择索引值为奇数 的div元素." id="btn14"/>
<input type="button" value="选择索引值等于3的元素." id="btn15"/>
<input type="button" value="选择索引值大于3的元素." id="btn16"/>
<input type="button" value="选择索引值小于3的元素." id="btn17"/>
<input type="button" value="选择所有的标题元素." id="btn18"/>
<input type="button" value="选择当前正在执行动画的所有元素." id="btn19"/>
<input type="button" value="选择当前获取焦点的所有元素." id="btn20"/>
<h3>内容过滤选择器.</h3>
<input type="button" value="选取含有文本“di”的div元素." id="btn21"/>
<input type="button" value="选取不包含子元素(或者文本元素)的div空元素." id="btn22"/>
<input type="button" value="选取含有class为mini元素 的div元素." id="btn23"/>
<input type="button" value="选取含有子元素(或者文本元素)的div元素." id="btn24"/>
<h3>可见性过滤选择器.</h3>
<input type="button" value="选取所有不可见的元素.包括input type=hidden和divstyle=display:none;"id="btn_hidden"/>
<h3> 属性选择器.</h3>
<input type="button" value="选取含有 属性title 的div元素." id="btn25"/>
<input type="button" value="选取 属性title值等于“test”的div元素." id="btn26"/>
<input type="button" value="选取 属性title值不等于“test”的div元素(没有属性title的也将被选中)." id="btn27"/>
<input type="button" value="选取 属性title值 以“te”开始 的div元素." id="btn28"/>
<input type="button" value="选取 属性title值 以“est”结束 的div元素." id="btn29"/>
<input type="button" value="选取 属性title值 含有“es”的div元素." id="btn30"/>
<input type="button" value="组合属性选择器,首先选取有属性id的div元素,然后在结果中 选取属性title值 含有“es”的元素." id="btn31"/>
<br /><br />
<!-- 测试的元素 -->
<div class="one" id="one" >
    id为one,class为one的div
    <div class="mini">class为mini</div>
</div>

<div class="one"  id="two" title="test" >
    id为two,class为one,title为test的div.
    <div class="mini"  title="other">class为mini,title为other</div>
    <div class="mini"  title="test">class为mini,title为test</div>
</div>

<div class="one">
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini"></div>
</div>

<div class="one">
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini">class为mini</div>
    <div class="mini"  title="tesst">class为mini,title为tesst</div>
</div>


<div style="display:none;"  class="none">
    style的display为"none"的div
</div>

<div class="hide">class为"hide"的div</div>

<div>
    包含input的type为"hidden"的div<input type="hidden" size="8"/>
</div>
</body>
</html>

9. 操作元素节点

1. 获取元素

获取<p>标签:var $para = $("p")

获取第二个<li>元素:var $li = $("ul li:eq(1)")

2. 获取属性和文本

获取<p>title属性:var p_txt = $para.attr("title")

获取<li>的文本内容:var li_txt = $li.text()

3. 创建和插入元素

创建<li>元素并追加到<ul>中:

var $li_1 = $("<li title='西瓜'>西瓜</li>");
var $li_2 = $("<li title='菠萝'>菠萝</li>");
var $parent = $("ul");
$parent.append($li_1).append($li_2);

插入元素到第一位:$parent.prepend($("<li title='葡萄'>葡萄</li>"))

在指定位置插入元素:$("<li title='芒果'>芒果</li>").insertAfter($("ul li:eq(1)"));

4. 删除和清空元素

删除第二个<li>元素:$("ul li:eq(1)").remove();

清空第二个<li>的内容:$("ul li:eq(1)").empty();

5. 复制节点

点击<li>时复制并追加到<ul>中:$(this).clone(true).appendTo("ul");

6. 替换节点

替换<p>标签为<strong>$("<strong>风吹雨成花</strong>").replaceAll("p");

7. 包裹节点

<strong>包裹在<i>标签中:$("strong").wrap("<i></i>");

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>操作元素节点</title>
    <script src="jquery-3.7.1.js"></script>
</head>
<body>
    <p title="选择你最喜欢的水果">选择你最喜欢的水果</p>
    <script>
        $(function(){
            // 获取p节点
            var $para = $("p")
            //获取第二个li元素
            var $li = $("ul li:eq(1)")
            //获取p元素的属性
            var p_txt = $para.attr("title")
            alert(p_txt)
            //获取li元素值
            var li_txt = $li.text()
            alert(li_txt)
            //创建li元素
            var $li_1 = $("<li title='西瓜'>西瓜</li>")
            var $li_2 = $("<li title='菠萝'>菠萝</li>")
            //创建ul元素
            var $parent = $("ul")//document.createElement("ul")
            $parent.append($li_1)
            $parent.append($li_2)
            //插入元素至第一位
            var $li_3 = $("<li title='葡萄'>葡萄</li>")
            $parent.prepend($li_3)
            //插入元素
            var $two_li = $("ul li:eq(1)")
            var $li_4 = $("<li title='芒果'>芒果</li>")
            $li_4.insertAfter($two_li)
            //删除元素
            var $li_remove = $("ul li:eq(1)").remove()
            $li_remove.appendTo("ul")
            //删除title不等于菠萝的元素
            // $("ul li").remove("li[title!=菠萝]")
            //清空元素中的内容
            $("ul li:eq(1)").empty()
            //复制节点
            $("ul li").click(function(){
                $(this).clone(true).appendTo("ul")
            })
            //替换节点
            // $("p").replaceWith("<strong>风吹雨成花</strong>")
            $("<strong>风吹雨成花</strong>").replaceAll("p")
            //包裹节点
            $("strong").wrap("<i></i>")
        })
    </script>
    <ul>
        <li title="苹果">苹果</li>
        <li title="香蕉">香蕉</li>
        <li title="鸭梨">鸭梨</li>
    </ul>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值