jQuery简单入门

一、jQuery介绍

1.什么是jQuery?

jQuery,顾名思义,也就是JavaScript和查询(Query),它就是辅助JavaScirpt开发的js类库

2.jQuery的核心思想

它的核心思想就是write less, do more(写得更少,做得更多),所以它实现了很多浏览器的兼容问题。

3.jQuery的好处

jQuery是免费、开源的,jQuery的语法设计可以使开发更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。

4.jQuery使用示例

<!--引入jQuery库-->
<script src="../jQuery/jquery-3.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
        $(function() { //表示页面加载完成之后,相当于window.onload=function(){}
            var $btn = $("#btnid"); //按id查询标签对象
            $btn.click(function() { //绑定单击事件
                alert("jQuery单击事件");
            });


        });
</script>
<button id="btnid">say hello</button>

使用说明:

  1. 一定要先引入jQuery库
  2. $是一个函数
  3. 绑定事件(例如给按钮添加点击响应)
    1. 使用jQuery查询到标签对象
    2. 使用标签对象.click(function(){})

二、jQuery核心函数

$是jQuery的核心函数,能完成jQuery的很多功能。$()就是调用这个函数

1、当传入参数为[函数]时

表示页面加载完成之后。相当于window.onload=function(){}

<script type="text/javascript">
    //表示页面加载完成之后,相当于window.onload=function(){}    
    $(function() {});
</script>

2、当传入参数为[HTML字符串]时

根据这个字符串创建元素节点对象

<script type="text/javascript">
    $(function() {
        $("<div>" +
          "<span>div-span1</span>" +
          "<span>div-span2</span>" +
          "</div>").appendTo("body");
		//在body标签内添加字符串的内容
    });
</script>

3、当传入参数为[选择器字符串]时

根据这个字符串查找元素节点对象

$("#id属性值"); //根据id值查询
$("标签名"); //根据标签名查询
$(".class属性值"); //根据类属性值查询

4、当传入参数为[DOM对象]时

将DOM对象包装为jQuery对象返回

var btnObj = document.getElementById("btn");
alert(btnObj);//[object HTMLButtonElement]
alert($(btnObj));//[object Object]

三、jQuery对象和dom对象区分

1、哪些是jQuery对象,哪些是dom对象

Dom对象

  1. 通过document查询出来的对象是Dom对象
  2. 通过document创建出来的对象是Dom对象

JQuery对象

  1. 通过jQuery提供的API创建的对象是jQuery对象
  2. 通过jQuery包装的Dom对象,是jQuery对象
  3. 通过jQuery提供的API查询到的对象,是jQuery对象

2、jQuery对象的本质

jQuery对象是dom对象的数组+jQuery提供的一系列功能函数。

3、jQuery对象和Dom对象使用区别

  • jQuery对象不能使用DOM对象的属性和方法

  • DOM对象也不能使用jQuery对象的属性和方法

4、Dom对象和jQuery对象互转

1)、Dom对象转为jQuery对象

  1. 先有dom对象
  2. $(Dom对象)就可以转为jQuery对象

2)、jQuery对象转为dom对象

  1. 先有jQuery对象
  2. 我们知道jQuery对象是dom对象的数组,故使用jQuery对象[下标]就能取出相应的dom对象

四、jQuery选择器

1、基本选择器

$("选择器");
  • #id:根据id查找标签对象
  • .class:根据class查找标签对象
  • element:根据标签名查找标签对象
  • *:表示任意的元素
  • select1, select2 :合并选择器1,选择器2的结果并返回
  • p.className:取p和.className结果的交集并返回

查询结果的顺序是与页面中的标签的先后顺序一致的,不是与选择器的先后顺序一致的

2、层级选择器

1)、ancestor descendant

在给定的组员元素下匹配所有的后代元素

HTML代码

<form>
  <label>Name:</label>
  <input name="name" />
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
 </fieldset>
</form>
<input name="none" />

jQuery代码

$("form input")

结果

[ <input name="name" />, <input name="newsletter" /> ]

2)、parent > child

在给定的父元素下匹配所有的子元素

HTML代码

<form>
  <label>Name:</label>
  <input name="name" />
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
 </fieldset>
</form>
<input name="none" />

jQuery代码

$("form > input")

结果

[ <input name="name" /> ]

3)、prev + next

匹配所有紧接在 prev 元素后的 next 元素

HTML代码

<form>
  <label>Name:</label>
  <input name="name" />
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
 </fieldset>
</form>
<input name="none" />

jQuery代码

$("label + input")

结果

[ <input name="name" />, <input name="newsletter" /> ]

4)、prev ~ siblings

匹配 prev 元素之后的所有 siblings 元素

HTML代码

<form>
  <label>Name:</label>
  <input name="name" />
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
 </fieldset>
</form>
<input name="none" />

jQuery代码

$("form ~ input")

结果

[ <input name="none" /> ]

3、其他选择器

jQuery的过滤器与css基本上一致的,只是jQuery有jQuery的写法,这里就不加赘述了。

五、jQuery的文档操作

1、属性操作

  • html() :可以设置和获取起始标签和结束标签中的内容。跟dom属性innerHTML一样。
//返回p元素的内容。
$('p').html();

//设置所有 p 元素的内容
$("p").html("Hello <b>world</b>!");
  • text():可以设置和获取起始标签和结束标签中的文本。跟dom属性的innerText一样
//返回p元素的文本内容。
$('p').text();

//设置所有 p 元素的文本内容
$("p").text("Hello world!");
  • val():可以设置和获取表单项的value属性值。跟dom的value一样
//获取文本框中的值
$("input").val();

//设定文本框的值
$("input").val("hello world!");
  • attr():设置或返回被选元素的属性值。

不推荐操作checked、readOnly、selected、disabled等

attr还可以设置自定义属性

//返回文档中所有图像的src属性值。
$("img").attr("src");

//为所有图像设置src和alt属性
$("img").attr({ src: "test.jpg", alt: "Test Image" });

//为所有图像设置src属性。
$("img").attr("src","test.jpg");
  • prop():设置或返回被选元素的属性值。

prop和attr的作用相同,不同的是prop有返回值,attr没有返回值。

只推荐操作checked、readOnly、selected、disabled等。

//选中复选框为true,没选中为false
$("input[type='checkbox']").prop("checked");

//禁用页面上的所有复选框。
$("input[type='checkbox']").prop({
  disabled: true
});

//禁用和选中所有页面上的复选框。
$("input[type='checkbox']").prop("disabled", true);
$("input[type='checkbox']").prop("checked", true);
  • offset():返回或设置第一个匹配元素相对于文档的位置

返回标签前距离左上角的距离

2、dom的增删改操作

1)、内部插入

  • appendTo()

a.appendTo(b) :把a插入到b子元素的末尾,成为b的最后一个子元素

HTML代码

<p>I would like to say: </p>

jQuery代码

$("p").append("<b>Hello</b>");

结果

[ <p>I would like to say: <b>Hello</b></p> ]
  • prependTo()

a.prependTo(b):把a插入到b子元素的前面,成为b的第一个子元素

HTML代码

<p>I would like to say: </p>
<div id="foo"></div>

jQuery代码

$("p").prependTo("#foo");

结果

<div id="foo">
    <p>I would like to say: </p>
</div>

2)、外部插入

  • insertAfter()

把所有匹配的元素插入到另一个、指定的元素元素集合的后面。兄弟标签

HTML代码

<p>I would like to say: </p>
<div id="foo">Hello</div>

jQuery代码

$("p").insertAfter("#foo");

结果

<div id="foo">Hello</div>
<p>I would like to say: </p>
  • insertBefore()

把所有匹配的元素插入到另一个、指定的元素元素集合的前面。

HTML代码

<div id="foo">Hello</div>
<p>I would like to say: </p>

jQuery代码

$("p").insertBefore("#foo");

结果

<p>I would like to say: </p>
<div id="foo">Hello</div>

3)、替换

  • replaceWith()

将所有匹配的元素替换成指定的HTML或DOM元素。

a.replaceWith(b):用b替换a

HTML代码

<p>Hello</p>
<p>cruel</p>
<p>World</p>

jQuery代码

$("p").replaceWith("<b>Paragraph. </b>");

结果

<b>Paragraph. </b>
<b>Paragraph. </b>
<b>Paragraph. </b>
  • replaceAll()

a.replaceAll(b):用a替换掉所有的b

HTML代码

<p>Hello</p>
<p>cruel</p>
<p>World</p>

jQuery代码

$("<b>Paragraph. </b>").replaceAll("p");

结果

<b>Paragraph. </b>
<b>Paragraph. </b>
<b>Paragraph. </b>

4)、删除

  • remove()

删除标签

HTML代码

<p>Hello</p>
how are 
<p>you?</p>

jQuery代码

$("p").remove();

结果

how are
  • empty()

清空标签里的内容

HTML代码

<p>
    Hello, 
    <span>Person</span>
    <a href="#">and person</a>
</p>

jQuery代码

$("p").empty();

结果

<p></p>

3、css样式操作

  • addClass() :添加样式

HTML代码

<ul>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
</ul>

jQuery代码

$('ul li').addClass(function() {
  return 'item-' + $(this).index();
});

结果

<ul>
   <li class="item-0">Hello</li>
	<li class="item-1">Hello</li>
	<li class="item-2">Hello</li> 
</ul>
  • removeClass() :删除样式

HTML代码

<ul>
   <li class="item-0">Hello</li>
	<li class="item-1">Hello</li>
	<li class="item-2">Hello</li> 
</ul>

jQuery代码

$('ul li').removeClass("item-0");

结果

<ul>
   <li class="">Hello</li>
	<li class="item-1">Hello</li>
	<li class="item-2">Hello</li> 
</ul>
  • toggleClass(): 有就删除,没有就添加样式

HTML代码

<ul>
   <li class="">Hello</li>
	<li class="item-1">Hello</li>
	<li class="item-2">Hello</li> 
</ul>

jQuery代码

$('ul li').toggleClass("item-1");

结果

<ul>
    <li class="item-1">Hello</li>
    <li class="">Hello</li>
    <li class="item-2 item-1">Hello</li>
</ul>

4、动画操作

1)、基本动画

  • show() :将隐藏的元素显示

HTML代码:

<p style="display: none">Hello</p>

jQuery代码:

$("p").show()

结果:

<p style="">Hello</p>
  • hide():将可见的元素隐藏

HTML代码:

<p >Hello</p>

jQuery代码:

$("p").hide();

结果:

<p style="display: none;">Hello</p>
  • toggle():可见就隐藏,不可见就显示

动画都可以添加参数:

  1. 第一个参数是动画的时长,以毫秒为单位
  2. 第二个参数是动画的回调函数(动画完成后自动调用的函数)

2)、淡入淡出动画

  • fadeIn():淡入(慢慢可见)
  • fadeOut():淡出(慢慢消失)
  • fadeTo():在指定时长内慢慢将透明度修改到指定的值。0透明,1完全可见
  • fadeToggle():淡入淡出切换

5、事件操作

1)、原生js页面和jQuery页面加载完成之后的区别

即$(function(){})和window.onload=function(){}的区别

触发的顺序

  1. jQuery页面加载完成之后先执行
  2. 原生js页面加载完成之后后执行

触发的时间

  1. jQuery的页面加载完成是在浏览器的内核解析完页面的标签,创建好Dom之后就会马上执行。
  2. 原生js的页面加载完成,除了要等浏览器内核解析完标签,创建好Dom,还要的等标签显示时需要的内容加载完成

执行的次数

  1. 原生js页面加载完成之后,只会执行一次window.onload=function(){}操作,就算有多个操作,前面的函数也会被后面的覆盖
  2. jQuery的页面加载完成之后,会顺序执行全部的$(function(){}),

2)、常用事件处理方法

  • click():绑定及触发单击事件
  • mouseover():鼠标移入事件
  • mouseout():鼠标移出事件
  • on():可以给元素一次性绑定一个或多个事件
  • one():也是绑定事件。绑定的事件只能响应一次
  • off():解除事件的绑定

3)、事件的冒泡

什么是事件冒泡?

事件的冒泡指的是,父子元素同时绑定同一个事件。当触发子元素的事件的时候,同一个事件也被传递到了父元素的事件里去响应。

比如:父子元素都绑定了点击事件,我们点击触发子元素的事件,子元素事件触发完成后,父元素的点击事件也会触发。

如何阻止事件冒泡?

在子元素的函数体内,return false就可以阻止事件的冒泡传递。

4)、事件对象

什么是事件对象?

是封装有触发的事件信息的一个javascript对象。

如何获取事件对象?

在给元素绑定事件的时候,在事件的function(event)参数列表中添加一个参数,我们习惯命名为event,这个event就是javascript事件对象。

我们可以从事件对象从获取到触发事件的详细信息

原文地址:https://www.cnblogs.com/ylcc-zyq/p/12554071.html