jQuery常用方法

269 阅读4分钟

jQuery操作标签内容方法

以下示例均省略了jQuery文件引用,实际使用需要添加引用。如:

<script src="js/jquery-1.12.4.min.js"></script>
复制代码

html()方法

html()方法相当于原生JS中的innerHTML属性,用来获取或设置标签内部内容。 方法可以传递一个参数,自定义标签内容。

  • 获取:文本和内部标签。

语法:jQuery对象.html()

  • 设置:设置标签时,标签会被渲染。

语法:jQuery对象.html('文本内容')

const box = $('.box');
// 获取标签元素内容,包含文本和标签
box.html();
// 设置标签元素内容
box.html('This is text');
复制代码

text方法

text()方法相当于原生JS中的innerText属性,用来获取或设置标签内部的文字。

  • 获取:仅仅是文本

语法:jQuery对象.text()

  • 设置:若设置标签时,标签会被当做普通文本

语法:jQuery对象.text('文本内容')

const box = $('.box');
// 获取标签内部文字内容,忽略标签
box.text();
// 设置标签标签内部文字内容
box.text('This is text');
复制代码

val方法

val()方法相当于原生JS中的value属性,用来获取或设置表单元素内容。

  • 获取:表单元素的value

语法:jQuery对象.val()

  • 设置:表单元素的value

语法:jQuery对象.val('文本内容')

// 获取元素
var $box = $(".box")// div标签
var $input = $("input")
var $ta = $("textarea")
var $se = $("select")
var $opt = $("option")
// html()和text()方法
console.log($input.text())// 对单标签,获取内容为空
console.log($input.html())// 对单标签,获取内容为空
console.log($ta.text())// 可以获取双标签文本内容
console.log($ta.html())// 可以获取双标签内容
console.log($se.text())// 可以获取双标签文本内容
console.log($se.html())// 可以获取双标签内容
console.log($opt.text())// 可以获取多个双标签元素的文本内容
console.log($opt.html())// 只能获取第一个双标签元素的内容
// 通过 val() 进行获取
console.log($box.val())// 没有value属性,则获取内容为空
console.log($input.val())// 没有value属性,则获取内容为空
console.log($ta.val())// 没有value属性,则获取文本内容
console.log($se.val())// 获取当前选项的value值,如果没有value值则获取其文本内容
console.log($opt.val())// 获取第一个选项的value值,如果没有value值则获取其文本内容
// 设置内容
$input.val("haha")// 所有input标签文本内容更改为haha
$ta.val("haha")//  文本内容更改为haha
$se.val("beijing")//  设置当前选项为value值为beijing的选项,没有该选项则设置为空选项
$opt.val("guangzhou")//  会将所有option的value值设置为guangzhou
复制代码

attr()和removeAttr()方法

attr:全称attribute,属性的意思。
作用:用来获取或者设置标签的属性值。

  • 设置标签的属性

语法:jQuery对象.attr(name,value);

  • 获取标签属性值

语法:jQuery对象.attr(name);

<img src="images/cat.jpg" alt="这是一只猫" hobby="fish" class="pic">
<script src="js/jquery-1.12.4.min.js"></script>
<script>
  // 获取元素
  var $pic = $(".pic")
  // 标签属性设置:需要传 2 个参数
  $pic.attr("src","images/cat2.jpg")    
  $pic.attr("hobby","sleep")    
  // 获取标签属性的值:需要 1 个参数
  console.log($pic.attr("alt"))
  console.log($pic.attr("hobby"))
  // 删除属性方法 removeAttr()
  $pic.removeAttr("hobby")
</script>
复制代码

prop()方法

针对:selected、checked、disabled等表单元素的属性。此类属性的属性值与属性名相同。

  • 获取,得到true或false

语法:$('input').prop('属性名');

  • 设置

语法:$('input').prop('属性名',true或者false)

<input type="button" value="按钮" disabled="disabled" class="btn"><br>
<input type="checkbox" checked="checked" class="choose"> 绘画
<script src="js/jquery-1.12.4.min.js"></script>
<script>
  // 获取元素
  var $btn = $(".btn")
  var $choose = $(".choose")
  var btn = document.querySelector(".btn")
  // 获取 disabled 的属性值
  console.log(btn.disabled)// 原生JS方法获取是否为disable状态,输出为true
  console.log($btn.attr("disabled"))// 得到的是disable字符串,不是我们想要的true或false布尔值
  console.log($btn[0].disabled)// 原生JS方法获取是否为disable状态,输出为true
  // prop() 方法,直接操作的就是布尔值
  console.log($btn.prop("disabled"))// 输出true
  console.log($choose.prop("checked"))// 输出true
  // 设置
  $btn.prop("disabled",false)// 设置disabled
</script>
复制代码

css()方法

用于调用或者更改css属性值。
语法:jQuery对象.css(name,value)
name:字符串格式的css样式属性名
value:设置或更改的属性值
注意:\

  • 一个参数:表示调用css属性的值,得到的是某个元素的计算后样式,值为字符串格式。\

  • 两个参数:表示设置css样式属性,第二个参数可以是字符串格式的属性值,如果带单位的数字的属性值,可以写成带单位的字符串格式、不带单位的字符串、纯数字、带+=等赋值运算的字符串。\

// 获取元素
var $box = $(".box")
    
// css() 传一个参数:获取对应的属性值
console.log($box.css("width"))
// 复合属性的单一属性写法,可以是横线写法,也可以是驼峰命名法
console.log($box.css("background-color"))
console.log($box.css("backgroundColor"))
// css() 传入两个参数:设置或更改对应的属性值
$box.css("width","400px")
$box.css("width","400")
$box.css("width",500)
$box.css("width","+=100px")
// 设置多条属性,可以使用对象形式的参数
$box.css({
  "width": 200,
  "height": 300
})
复制代码

addClass()、removeClass()、toggleClass()方法

  • addClass()添加类名。\

语法:jQuery对象.addClass(className)
className:字符串格式的类名

  • removeClass()删除类名

语法:jQuery对象.removeClass(className)
className:字符串格式的类名
如果不传参数,则默认删除所有类名

  • toggleClass()切换类名

语法:jQuery对象.toggleClass(className)
className:字符串格式的类名
如果类名存在则移除该类名,否则添加该类名。\

<!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>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background-color: pink;
        }
        .demo{
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <input type="button" value="添加" id="btn1">
    <input type="button" value="删除" id="btn2">
    <input type="button" value="切换" id="btn3">
    <div id="box" class="box"></div>

    <script src="js/jquery-1.12.4.min.js"></script>
    <script>
        // 给 box 切换 demo 的类名,从而改变背景颜色
        var $box = $("#box");
        var $btn1 = $("#btn1");
        var $btn2 = $("#btn2");
        var $btn3 = $("#btn3");

        // jQuery 中的类名控制方法,只会操作指定的类名,不会影响其他类名
        // 点击按钮 添加,让元素增加一个类名
        $btn1.click(function () {
          $box.addClass("demo")
        })

        // 点击按钮 删除,让元素减少一个类名
        $btn2.click(function () {
          $box.removeClass("demo")
          // 如果不传参数,会删除所有类名
          $box.removeClass()
        })

        // 点击按钮 切换,让元素在一个类名中进行添加和删除的自动切换
        $btn3.click(function () {
          $box.toggleClass("demo")
        })
    </script>
</body>
</html>
复制代码

hasClass()方法

判断类名是否存在
语法:jQuery对象.hasClass(className)
className:字符串格式的类名
返回值:true和false

// 判断 box 是否有 demo 的类名
if ($box.hasClass("demo")) {
  // 如果有 demo,就删除
  $box.removeClass("demo")
} else {
  // 如果没有 demo,就添加一个
  $box.addClass("demo")
}
复制代码

jQuery常用事件方法

jQuery对象封装了一系列的事件方法。
事件方法与原生JS事件方法名称类似,不需要写on
事件方法需要jQuery对象打点调用,小括号内的参数是事件函数。
例如点击事件:click()方法。\

mouseenter() 和 mouseleave()

jQuery对象.mouseenter(funMouseIn):鼠标进入
jQuery对象.mouseleave(funMouseOut):鼠标移出
funMouseIn:鼠标移入函数
funMouseOut:鼠标移出函数

mouseover() 和 mouseout()

jQuery对象.mouseover(funMouseIn):鼠标进入
jQuery对象.mouseout(funMouseOut):鼠标移出
funMouseIn:鼠标移入函数
funMouseOut:鼠标移出函数
对比:
注意:mouseover()和mouseout()有事件冒泡。在使用时,mouseenter()和mouseleave()更加合适。\

hover()

jQuery对象.hover(funMouseIn,funMouseOut)是对mouseenter和mouseleave的整合。 funMouseIn:鼠标移入函数 funMouseOut:鼠标移出函数

// 给 box 切换 demo 的类名,从而改变背景颜色
var $box = $("#box");
var $btn1 = $("#btn1");
var $parents = $("#parents");
// 添加事件,使用 自己对象的方法
$btn1.click(function () {
  $box.toggleClass("demo")
})
// hover() 方法,对mouseenter 和 mouseleave 进行了合并书写
$box.hover(function () {
  // 鼠标移入
  $box.addClass("demo")
},function () {
  // 鼠标离开
  $box.removeClass("demo")
})
// jQuery 中增加了自己的事件类型:mouseenter 和 mouseleave
// 没有事件冒泡
$box.mouseenter(function () {
  // 鼠标进入元素,触发事件
  console.log("box-mouse-in")
})
$box.mouseleave(function () {
  // 鼠标离开元素,触发事件
  console.log("box-mouse-out")
})
$parents.mouseenter(function () {
  // 鼠标进入元素,触发事件
  console.log("parents-mouse-in")
})
$parents.mouseleave(function () {
  // 鼠标离开元素,触发事件
  console.log("parents-mouse-out")
})
// mouseover 和 mouseout :有事件冒泡
$box.mouseover(function () {
  // 鼠标进入元素,触发事件
  console.log("box-mouse-in")
})
$box.mouseout(function () {
  // 鼠标离开元素,触发事件
  console.log("box-mouse-out")
})
$parents.mouseover(function () {
  // 鼠标进入元素,触发事件
  console.log("parents-mouse-in")
})
$parents.mouseout(function () {
  // 鼠标离开元素,触发事件
  console.log("parents-mouse-out")
})
复制代码

节点关系查找方法

  • 事件中,$(this): 表示自己\

在原生的DOM操作中,事件函数内部有一个this关键字指向的就是触发事件的事件源,在jQuery中将this关键字传递给$()方法,得到就是指向自己的jQuery对象,就可以使用JQ的方法。\

  • parent()获取父级对象

jQuery对象都有一个parent()方法,得到的是自己的父级。父级得到的也是一个jQuery对象,可以继续打点调用JQ方法和属性。\

  • children()获取子级对象集

jQuery对象内部有一个children()方法,可以得到自己的所有子级元素组成的jQuery对象。 得到的子级组成的jQuery对象可以继续调用JQ方法和属性。
获得子级时,不限制标签类型。
children()可以传参数,参数是字符串格式的选择器,在选中所有子级的情况下,保留满足选择器的部分,进行了二次选择。

  • siblings()获取兄弟级对象集

siblings()可以传参数,参数是字符串格式的选择器,在选中所有子级的情况下,保留满足选择器的部分,进行了二次选择。

<!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>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    .box {
      width: 1000px;
      height: 80px;
      border: 1px solid #333;
      margin-top: 10px;
    }

    .box p,
    .box h2 {
      float: left;
      width: 80px;
      height: 80px;
      margin-right: 20px;
      background-color: #ccc;
    }
  </style>
</head>

<body>
  <div class="box">
    <p>p</p>
    <p>p</p>
    <p>p</p>
    <p>p</p>
    <h2>h2</h2>
    <h2>h2</h2>
    <h2>h2</h2>
  </div>
  <div class="box">
    <p>p</p>
    <p>p</p>
    <p>p</p>
    <p>p</p>
    <h2>h2</h2>
    <h2>h2</h2>
    <h2>h2</h2>
  </div>
  <div class="box">
    <p>p</p>
    <p>p</p>
    <p>p</p>
    <p>p</p>
    <h2>h2</h2>
    <h2>h2</h2>
    <h2>h2</h2>
  </div>

  <script src="js/jquery-1.12.4.min.js"></script>
  <script>
    // 获取所有的 p 标签
    var $ps = $("p")
    var $box = $(".box")

    // 批量添加事件
    $ps.click(function () {
      // 让点击的自己 颜色变红色
      // this 指向的是触发事件的事件源的原生 JS 对象
      // 需要转换成 jQuery对象
      $(this).css("background-color","red")
      // 找到事件源的 父级元素,添加黄色背景
      // $(this).parent().css("background-color","yellow")
      // 查找兄弟元素
      // $(this).siblings().css("background-color","skyblue")
      // $(this).siblings("h2").css("background-color","skyblue")

    })

    // 通过点击 div 获取它的子级元素
    $box.click(function () {
      // 获取子级
      // $(this).children().css("background-color","pink")
      // 添加参数后,会按照指定的选择器在子级中进行二次选择
      $(this).children("p").css("background-color","pink")
    })
  </script>
</body>
</html>
复制代码

链式调用

jQuery对象调用任何方法(除了节点关系方法)执行完后,方法都会有一个返回值,返回值就是jQuery对象自己,这个现象给我们提供了便利,可以对执行结果继续打点调用JQ的方法和属性。

// 获取所有的 p 标签
var $ps = $("p")
var $box = $(".box")
// 批量添加事件
$ps.click(function () {
  // 让点击的自己 颜色变红色
  // jQuery 对象调用除了节点关系的方法之外,其他的方法执行后,返回值就是 对象自己
  // 可以继续链式调用其他的 jQuery 对象的方法和属性
  // 好处:简化代码书写
  // console.log($(this).css("background-color","red").html("哈哈"))
  $(this).css("background-color", "red")        // 自己变红色
  .siblings().css("background-color", "gold")   // 兄弟变金色
  .parent().css("background-color", "pink")     // 父级变粉色
  .siblings().css("background-color", "blue")   // 父级的兄弟变蓝色
  .children().css("background-color", "yellowgreen")  // 父级的兄弟的子级变黄绿色
})
复制代码

其他节点关系方法

  • find()获取后代元素

jQuery对象可以利用find()方法,传递一个参数,参数部分规定的选择器,查找范围是jQuery对象的所有后代。参数是字符串格式的选择器。

  • 紧邻兄弟元素的方法

next()下一个兄弟元素
prev()上一个兄弟元素\

  • 多选方法

nextAll()后面所有兄弟元素
preAll()前面所有兄弟元素
可以传参数,参数是字符串格式的选择器,在选中所有子级的情况下,保留满足选择器的部分,进行了二次选择。

// 获取元素
var $box1 = $("#box1")
var $box = $(".box")
var $child = $box.children()
// find() 方法查找后代中的 span 元素
$box1.find("span").css({
  "width": 50,
  "height": 50
})
// 兄弟元素查找
// next() 下一个兄弟
// prev() 上一个兄弟
// nextAll() 后面所有兄弟
// prevAll() 前面所有兄弟
// parents() 查找包含body在内的祖先级
$child.click(function () {
  // 让自己变红色,让下一个兄弟变粉色
  $(this).css("background-color", "red")
  .next().css("background-color", "skyblue")
  // 让自己变红色,让上一个兄弟变蓝色
  $(this).css("background-color", "red")
  .prev().css("background-color", "blue")
  // 让自己变红色,让前面所有兄弟变蓝色,让后面所有兄弟变黄色
  $(this).css("background-color", "red")
  .prevAll().css("background-color", "blue")
  $(this).nextAll("p").css("background-color", "yellow")
  // 让自己变红色,祖先级变天蓝色
  $(this).css("background-color", "red")
  .parents("div").css("background-color", "skyblue")
})
复制代码

发送验证码案例

<!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>
  <input type="text">
  <input type="button" value="发送">
  <script src="js/jquery-1.12.4.min.js"></script>
  <script>
    // 获取元素
    var $btn = $("input:button")
    // 添加按钮的点击事件
    $btn.click(function () {
      // 定义一个变量存储时间的数字
      var n = 5;
      // 让按钮被禁用
      // 替换按钮的文字内容
      $(this).prop("disabled",true).val(n + "s 后重新发送")
      // 每隔 1s 更改倒计时内容
      // 通过定时器进行每隔 1s 减时间效果
      var timer = setInterval(() => {
        n--;
        // 文字内容发生变化
        // 定时器内部的this指向的默认为 window
        $(this).val(n + "s 后重新发送")
        // 判断如果时间到了 0 ,就要停止定时器
        if (n <= 0) {
          clearInterval(timer)
          // 5s 结束后,需要让文字恢复 发送
          // 让按钮取消禁用          
          $(this).val("重新发送").prop("disabled",false)
        }
      },1000)
      
    })
    
  </script>
</body>
</html>


作者:小流江河
链接:juejin.cn/post/693323… 来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。