jQuery-初识-操作(章节一)

jQuery-函数对象、特有选择器、操作样式(章节一)

一、 jQuery 初识

JavaScript库:即 library,是一个封装好的特定的集合(方法和函数)。理解为在这个库中,封装了很多预先定义好的函数在里面,比如动画animate、hide、show,比如获取元素等。而jQuery 就是一个JS 文件,里面对我们原生js代码进行了封装,存放到里面。这样我们可以快速高效的使用这些封装好的功能了。jQuery,就是为了快速方便的操作DOM。

1. jQuery的优点
  • 轻量级。核心文件才几十kb,不会影响页面加载速度。
  • 跨浏览器兼容,基本兼容了现在主流的浏览器。
  • 链式编程、隐式迭代。
  • 对事件、样式、动画支持,大大简化了DOM操作。
  • 支持插件扩展开发。有着丰富的第三方的插件,例如:树形菜单、日期控件、轮播图等。
  • 免费、开源。

2.体验jQuery

第一步:下载jQuery文件
jquery-1.11.0.min.js

第二步:在文档中插引入jQuery文件,书写体验代码

在这里插入图片描述从上到下执行,已经加载到body的内容,没有写入口函数也能够执行
在这里插入图片描述相反
在这里插入图片描述因为没有加载到body的内容,执行不了,要添加一个入口函数

jQuery中常见的两种入口函数:

// 第一种: 简单易用。
$(function () {   
    ...  // 此处是页面 DOM 加载完成的入口
}) ; 

// 第二种: 繁琐,但是也可以实现
$(document).ready(function(){
   ...  //  此处是页面DOM加载完成的入口
});

注意:
jQuery入口函数等着 DOM 结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,jQuery 帮我们完成了封装。
相当于原生 js 中的 DOMContentLoaded。
不同于原生 js 中的 load 事件是等页面文档、外部的 js 文件、css文件、图片加载完毕才执行内部代码。更推荐使用第一种方式。

在这里插入图片描述
代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
      //简易写法
    $(function(){
        //文档加载完毕执行函数
        $("h1").html("可可");
    })
    //复杂写法
    $(document).ready(function(){
        $("h1").html("可可");
    })
    </script>
    <h1>1</h1>
    <h1>2</h1>
    <h1>3</h1>    
  </body>
</html>
3. jQuery中的顶级对象$

$是 jQuery 的别称,在代码中可以使用 jQuery 代替,但一般为了方便,通常都直接使用 $
$是jQuery的顶级对象,相当于原生JavaScript中的 window。把元素利用$包装成jQuery对象,就可以调用jQuery 的方法。
示例:jquery封装形式

 <script>
    var $ = function(selector){
        var domList = document.querySelectorAll(selector);
        domList.__proto__.html = function(value){
            domList.forEach(function(item,i){
                item.innerHTML = value;
            })
        }
    }
    </script>
    //jquery封装形式

二、jQuery对象
1.jQuery 对象和 DOM 对象

使用 jQuery 方法和原生JS获取的元素是不一样的 :

用原生 JS 获取来的对象就是 DOM 对象
jQuery 方法获取的元素就是 jQuery 对象。
jQuery 对象本质是: 利用$对DOM 对象包装后产生的对象(伪数组形式存储)。
注意:只有 jQuery 对象才能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 方法。

示例

语法:$("h1");
//返回的对象并不是原生的dom对象,而是jquery封装的dom对象,但是可以通过索引值获取原生的dom对象
2. jQuery 对象和 DOM 对象相互转换

DOM 对象与 jQuery 对象之间是可以相互转换的。因为原生js 比 jQuery 更大,原生的一些属性和方法 jQuery没有给我们封装. 要想使用这些属性和方法需要把jQuery对象转换为DOM对象才能使用。

// 1.DOM对象转换成jQuery对象,方法只有一种
 var d1 = document.querySelector("#d1"); // 获取DOM对象
 var jQobj = $(d1);// 把DOM对象转换为 jQuery 对象
//可以简写为
    $("#d1")
// 2.jQuery 对象转换为 DOM 对象有两种方法:
//   2.1 jQuery对象[索引值]
var domObject1 = $('div')[0]

//   2.2 jQuery对象.get(索引值)
var domObject2 = $('div').get(0)

示例:DOM对象转换成jQuery对象
在这里插入图片描述示例:jQuery 对象转换为 DOM 对象
在这里插入图片描述示例:相互转化

        //jquery对象转化为原生对象
        var a = $("h1")[0];
        console.log(a)
       //封装为jquery对象
        console.log( jQuery(a));

在这里插入图片描述

实际开发比较常用的是把DOM对象转换为jQuery对象,这样能够调用功能更加强大的jQuery中的方法。
三、jQuery 选择器

原生 JS 获取元素方式很多,很杂,而且兼容性情况不一致,因此 jQuery 给我们做了封装,使获取元素统一标准。

jquery筛选选择器手册

1.基础选择器
$("选择器")//里面选择器直接写 CSS 选择器即可,但是要加引号 

在这里插入图片描述

2.层级选择器

层级选择器最常用的两个分别为:后代选择器和子代选择器

在这里插入图片描述

3.筛选选择器

常见如下:
在这里插入图片描述
在这里插入图片描述

示例: eq()

   $("h1").eq(5).css("background","orange");
   $("h1:eq(5)").css("color","#fff");
   //给索引值为5的标签设置背景颜色
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
   <h1>内容1</h1>
   <h1>内容2</h1>
   <h1>内容3</h1>
   <h1>内容4</h1>
   <h1>内容5</h1>
   <h1>内容6</h1>
   <h1>内容7</h1>
   <h1>内容8</h1>
   <h1>内容9</h1>
   <h1>内容10</h1>
       <div>行1</div>
    <div>行2</div>
    <div>行3</div>
    <div>行4</div>
    <div>行5</div>
    <div>行6</div>
    <div>行7</div>
    <div>行8</div>
    <div>行9</div>
    <div>行10</div>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
    //索引值大于5
    $('h1:gt(5)').css("background","pink");
    //索引值小于5
    $('h1:lt(5)').css("background","skyblue");
    $("h1").eq(5).css("background","orange");
    $("h1:eq(5)").css("color","#fff");
    console.log($("h1"))
     //选择第一行
     $("div:first").css("font-weight","900");
      //选择最后一行
     $("div:last").css("font-weight","900");
    </script>
  </body>
</html>

在这里插入图片描述示例:children(),find(),siblings()

	var li = d1.find("li");
    var child = d1.children("ol");
    var brother = d1.find("li").eq(3).siblings().css("background","pink");
    //给li的第三个索引值的所有兄弟标签设置属性,不包含他本身
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <div id="d1">
      <ol>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>有序列表</li>
        <li>
            <ol>
                <li>有序子列表</li>
                <li>有序子列表</li>
                <li>有序子列表</li>
                <li>有序子列表</li>
                <li>有序子列表</li>
            </ol>
        </li>
      </ol>
    </div>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
    //找到的内容在筛选
    var d1 = $("#d1");
    console.log(d1);
    //查找d1的子孙元素
    var li = d1.find("li");
    console.log(li);
    //获取直接子元素
    var child = d1.children("ol");
    console.log(child);
    //获取兄弟元素
    var brother = d1.find("li").eq(3).siblings().css("background","pink");
    console.log(brother);
    </script>
  </body>
</html>

在这里插入图片描述示例:odd(),even()

//奇数
     $("ul li:odd").css("backgroundColor", "skyblue");
//偶数
     $("ul li:even").css("backgroundColor", "pink");
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <div id="d1">
     <ul>
         <li>1</li>
         <li>2</li>
         <li>3</li>
         <li>4</li>
         <li>5</li>
     </ul>
    </div>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
      $("ul li:odd").css("backgroundColor", "skyblue");
      $("ul li:even").css("backgroundColor", "pink");
    </script>
  </body>
</html>

在这里插入图片描述
案例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <style>
      .control{
          width: 500px;
          height: 650px;
          display: flex;
          flex-direction: column;
      }
  .btnlist{
      width: 500px;
      height: 150px;
      display: flex;
      justify-content: space-evenly;
      align-items: center;
      background-color:pink;
  }
  button{
      width: 80px;
      height: 50px;
      outline: none;
      border-style: none;
      background-color: lightcoral;
      text-align: center;
      font-size: 15px;
      line-height: 50px;
      box-shadow: 0 0 10px saddlebrown;
      border-radius: 20px;
      transition: all 0.3s;
  }
  .btnactive{
    box-shadow: 0 0 20px #eccd78;
    background-color: #efefef;
  }
  .contentlist{
      flex: 1;
      width: 100%;
      background-color: rgb(135, 206, 235,0.5);
      position: relative;
  }
  .content{
    opacity: 0;
    position: absolute;
    top: 0;
    left: 0;
  }
  .active{
      opacity: 1;
  }
  </style>
  <body>
    <div class="control">
   <div class="btnlist">
       <button>头条新闻</button>
       <button>娱乐新闻</button>
       <button>周边新闻</button>
   </div>
   <div class="contentlist">
        <div class="content active">1sasdxsaascascsdsa</div>
        <div class="content" >2sadsaxdsaxsadxa</div>
        <div class="content">3asdsaxasxdasdxsaxd</div>
   </div>
</div>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
   $("button").click(function(){
  //通过原生对象获取索引值
  //console.log($(this).index())获得当前点击对象的索引值
  //    console.log(this)
  //    console.log(e)
    var index = $(this).index();
$("button").eq(index).addClass("btnactive").siblings().removeClass("btnactive")
    $(".content").eq(index).addClass("active").siblings().removeClass("active")
   })
    </script>
  </body>
</html>

在这里插入图片描述

四、jquery的属性操作

html属性操作:是对html文档中的属性进行读取,设置和移除操作。比如attr()、removeAttr()
DOM属性操作:对DOM元素的属性进行读取,设置和移除操作。比如prop()、removeProp()
类样式操作:是指对DOM属性className进行添加,移除操作。比如addClass()、removeClass()、toggleClass()
值操作:是对DOM属性value进行读取和设置操作。比如html()、text()、val()

1.jquery操作样式

jQuery中常用的样式操作有两种:css() 和 设置类样式方法

1.css() 和 设置类样式

// 1.参数只写属性名,则是返回属性值
var color = $(this).css('color');

// 2.  参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
$(this).css(''color'', ''pink'');

// 3.  参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性可以不用加引号
$(this).css({ "color":"pink",
		      "font-size":"20px"
		      });
//css() 多用于样式少时操作,多了则不太方便。

2.设置类样式

// 1.添加类
$("div").addClass("active");

// 2.删除类
$("div").removeClass("active");

// 3.切换类
$("div").toggleClass("active");

示例:css 方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
.d1{
    color: rgba(30, 143, 255, 0.719);
}
</style>
<body>
    <h1>怦然心动如往昔,笑颜灿烂如春天。静看光阴荏苒,喑哑无言</h1>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
        //css上是在属性元素上设置样式内容,这样对象权重比较高,使得后面我们设置的样式没有效果
        //设置样式
        $("h1").css("background","pink");
        //一次设置多个样式
        $("h1").css({
            color:"rgba(30, 143, 255, 0.719)",
            border:"10px solid #ccc",
            //如果属性是由多个单词构成,那么可以使用双引号引起来或者使用驼峰命名法进行命名
            "border-radius":"20px",//border-radius:"20px"报错
            backgroundColor:"#efefef"
        })
        //获取样式属性
        var color = $("h1").css("color");
        console.log(color);
        </script>
</body>
</html>

2.类方法设置样式
示例:类方法

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <style>
    .d1 {
      width: 100px;
      height: 100px;
      background-color: pink;
      opacity: 0;
      transition: all 0.2s;
    }
    .active {
      opacity: 1;
    }
  </style>
  <body>
    <div class="d1" ></div>
    <button>切换显示</button>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
    $("button").click(function(){
    //    if($(".d1").hasClass("active")){
    //     $(".d1").removeClass("active")
    //    }else{
    //     $(".d1").addClass("active");
    //    }
    //等同于
    $(".d1").toggleClass("active");
    })
    </script>
  </body>
</html>

addClass(),removeClass(),toggleClass()

$('div').addClass("box");//追加一个类名到原有的类名

$('div').addClass("box box2");//追加多个类名

$('div').removeClass('box');移除指定的类(一个或多个)

$('div').removeClass();   移除全部的类

$(this).toggleClass('active')
//如果存在(不存在)就删除(添加)一个类
原生 JS  className 会覆盖元素原先里面的类名,jQuery 里面类操作只是对指定类进行操作,不影响原先的类名。
2.html属性操作

attr()

获取:
$('div').attr('id')
设置
$('div').attr('class','box')
设置多个值,键值对存储
$('div').attr({name:'hahaha',class:'happy'})

removeAttr()

//删除单个属性
$('#box').removeAttr('name');
$('#box').removeAttr('class');
 
//删除多个属性
$('#box').removeAttr('name class');
3.DOM属性操作

prop() 方法设置或返回被选元素的属性和值。当该方法用于返回属性值时,则返回第一个匹配元素的值。当该方法用于设置属性值时,则为匹配元素集合设置一个或多个属性/值对。
注意:prop() 除了普通属性操作,更适合操作表单属性:disabled / checked / selected 等。

返回属性的值
$(selector).prop(property)

设置属性和值
$(selector).prop(property,value)

设置多个属性和值
$(selector).prop({property:value, property:value,...})
//在使用单双选框的时候
//使用attr获取checked的值 
console.log($('input').eq(0).attr('checked'));
//使用prop获取checked的值              
console.log($('input').eq(0).prop('checked'));

这里是引用

4.值操作

见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性,主要针对元素的内容还有表单的值操作。

//1获取设置元素内容  html()类似于inner Html
$(this).html()  //是用来获取文本内容 识别标签和内容  
$(this).html("value")  //是用来设置内容文本

//2 获取设置元素的内容  text() 类似于inner text
$(this).text()  //是用来获取值
$(this).text("value")  //是用来设置文本

//3 表单的值 value()  类似于value
$(this).val()  //是用来获取表单文本内容的  不识别标签和内容
$(this).val("value") //是用来设置表单文本内容

五、jQuery操作DOM

​ jQuery方法操作元素的创建、添加、删除方法很多,多用以下几种:

1.创建元素

 var li =$("<li>可可</li>")

2.内部追加元素(父子关系)

$('ul').append(li) 

2.1.外部追加元素(兄弟关系)

 $('#d1').before('<h1>双十二快到了</h1>')
 //放在目标元素前面
 $('#d1').after('<h1>你准备贡献多少</h1>')
 //放在目标元素后面

3.删除元素

  $("#d1").empty();//删除匹配元素集合中所有的子节点
  $("#d1").html("");//清空匹配元素内容
  $("#d1").remove(); //会将自己和里面的元素删掉

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
</style>
<body>
    <div id="d1"></div>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
    //通过设置html来创建内容
    // $('#d1').html('<h1>helloworld</h1>')
    //创建元素,还在内存中
    var h1 = $('<h1>helloworld</h1>')
    $('#d1').append(h1)//追加才能显示
    h1.appendTo('#d1')//也可以追加只是写法相反
    console.log(h1);
    //在什么内容的最前面插入内容
    $('#d1').prepend('<h1>晚饭吃撒</h1>')
    $('#d1').before('<h1>双十二快到了</h1>')
    $('#d1').after('<h1>你准备贡献多少</h1>')
    //清空d1内容
    //$("#d1").empty();
    //$("#d1").html("");
    //会将自己和里面的元素删掉
    //$("#d1").remove();
    //复制元素
    var d1 = $("#d1").clone();
    $("#d1").after(d1);
        </script>
</body>
</html>

在这里插入图片描述练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
.control{
    width: 500px;
    height: 400px;
    background-color: azure;
    display: flex;
}
.left{
    width: 200px;
    height: 100%;
}
.right{
    width: 200px;
    height: 100%;
}
.center{
    width: 100px;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}
button{
    margin-top: 30px;
    width: 80px;
    height: 50px;
    outline: none;
    background-color: #efefef;
    box-shadow: 0 0 10px rgb(118, 162, 219);
}
select{
    width: 200px;
    height: 100%;
    background: #fff;
}
</style>
<body>
    <div class="control">
        <div class="left">
            <select name="username" id="username" multiple="multiple">
                <option value="">李四</option>
                <option value="">王五</option>
                <option value="">赵六</option>
                <option value="">七七</option>
            </select>
        </div>
        <div class="center">
            <button id="allright">>>>></button>
            <button id="allleft"><<<<</button>
            <button id="selectright"><<><<</button>
            <button id="selecteleft">>><>></button>
        </div>
        <div class="right">
            <select name="selectuser" id="selectuser" multiple="multiple">
            </select>
        </div>
    </div>
    <script src="../jsfile/jquery-1.11.0.min.js"></script>
    <script>
    $("#allright").click(function(){
        $("#username option").appendTo("#selectuser");
    })
    $("#allleft").click(function(){
        $("#selectuser option").appendTo("#username");
    })
    $("#selectright").click(function(){
        $("#username option:checked").appendTo("#selectuser ");
    })
    $("#selecteleft").click(function(){
        $("#selectuser option:checked").appendTo("#username");
    })
    </script>
</body>
</html>

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可可鸭~

想吃糖~我会甜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值