博客列表 >jQuery常用的getter、setter、DOM操作方法与过滤器

jQuery常用的getter、setter、DOM操作方法与过滤器

emy
emy原创
2020年06月07日 10:53:29934浏览

一、 getter 与 setter 操作

1. attr(): html属性进行操作
attr(name):  getter 查询
attr(name, value): setter 设置
QQ截图20200607095318.jpg
2-css(): 针对 html元素的style属性进行操作
QQ截图20200607100157.jpg

3-val():表单元素的值
QQ截图20200607102340.jpg

4-html()/text(): 元素内容操作
QQ截图20200607102800.jpg
代码展示:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="lib/jquery-3.5.1.js"></script>
    <title>基本的getter/setter-1</title>
    <style>
      body {
        display: flex;
        flex-direction: column;
        align-items: center;
        color: #666;
      }

      form {
        width: 400px;
        /* height: 150px; */
        padding: 20px 10px;
        border: 1px solid #aaa;
        box-shadow: 0 0 5px #888;
        box-sizing: border-box;
        background-color: #eee;
        display: grid;
        grid-template-columns: 80px 200px;
        gap: 10px;
        place-content: center center;
      }

      button {
        grid-column: 2 / 3;
        height: 26px;
      }

      button:hover {
        color: white;
        background-color: #888;
        border: none;
        cursor: pointer;
      }

      .red {
        color: red;
      }
    </style>
  </head>
  <body>
    <h2 class="red">用户登录</h2>
    <form action="handle.php" method="POST">
      <label for="email">Email:</label>
      <input
        type="email"
        name="email"
        id="email"
        autofocus
        value="leture999@php.cn"
      />
      <label for="password">Password:</label>
      <input type="password" name="password" id="password" value="不少于6位" />
      <label for="confirm">记住我:</label>
      <div>
        <input type="radio" name="save" id="confirm" value="1" checked /><label
          for="confirm"
          >保存</label
        >
        <input type="radio" name="save" id="cancel" value="0" /><label
          for="cancel"
          >放弃</label
        >
      </div>
      <button>登录</button>
    </form>

    <script>
      var cl = console.log.bind(console);
      var form = $("form");
      // 1. attr(): html属性进行操作
      // attr(name):  getter
      // attr(name, value): setter
      cl(form.attr("action"));
      form.attr("action", "admin/check.php");
      cl(form.attr("action"));
      form.attr({
        action: "selec.php?id=4",
        method: "post",
      });

      form.attr("action", function () {
        // 动态设置处理脚本, 如果是get, query.php?id=1,如果非get, register.php
        var method = $(this).attr("method").toLowerCase();
        return method === "get" ? "query.php?id=1" : "register.php";
      });

      // 2. css(): 针对 html元素的style属性进行操作
      // 不仅可以获取到style属性的值,还可以获取到该元素所有样式
      cl(window.getComputedStyle(document.querySelector("form")).width);
      cl(form.css("width"));
      cl(form.css("border"));
      form.css("border", "3px solid green");
      form.css({
        backgroundColor: "wheat",
        border: "5px dashed blue",
      });

      form.css("background-color", function () {
        // 这是一有四个颜色值的数组, 目标是从这个数组中随机返回一个值
        var bgcolor = ["plum", "lightblue", "tan", "lime"];
        // 返回哪个值, 由一个随机索引决定, 索引必须在0 -3 之间
        var randomIndex = Math.floor(Math.random() * bgcolor.length);
        return bgcolor[randomIndex];
      });

      // 3. val():表单元素的值
      cl($("#email").val());
      $("#email").val("emy@qq.cn");
      cl($("#email").val());
      // 获取选中按钮的值
      cl($("input:radio[name=save]:checked").val());
      // 回调
      $("#email").val(function () {
        return this.defaultValue;
      });

      // 4. html()/text(): 元素内容操作
      // innerText ===> text();
      document.querySelector("h2").innerText = "请登录";
      $("h2").text("赶紧登录");
      // innerHTML ===> html()
      document.querySelector("h2").innerHTML =
        '<span style="color:blue">请登录</span>';
      $("h2").html('<span style="color:green">请登录</span>');
      $("h2").html("请登录");
    </script>
  </body>
</html>

二、DOM操作
1-插入操作

  var cl = console.log.bind(console);
  // 1. 元素的插入与替换, 父元素.append(子元素)
  $("body").append("<ol>");
  // 子元素.appendTo(父元素)
  $("<li>").text("笔记本电脑").appendTo("ol");
  $("<li>").addClass("active").text("智能手机").appendTo("ol");

  $("<li>", {
    id: "hello",
    style: "background-color:yellow",
  })
    .html("<a href=''>格子衫</a>")
    .appendTo("ol");

QQ截图20200607103400.jpg
2-append(callback) 插入一个列表

  // append(callback)
  $("ol").append(function () {
    var res = "";
    for (var i = 0; i < 5; i++) {
      res += "<li><a href=''>最新商品" + (i + 1) + "</a></li>";
    }
    return res;
  });

QQ截图20200607103520.jpg2-

3-选择目标位置插入:

// 从第3个元素前面添加<li>, before(), 在某个元素之前添加
  $("ol > li:nth-of-type(3)").before("<li>新元素</li>");
  // insertAfter()
  $("<li>新元素2</li>").insertAfter("ol > li:nth-of-type(4)");
  // prepend(), prependTo(), 将新元素插入到头部
  $("<li>最新留言</li>").prependTo("ol");

QQ截图20200607103831.jpg
4-元素替换: replaceWith()

$("ol > li:last-of-type").replaceWith("<h3>Hello PHP.CN</h3>");
  $("<p>Hello World...</p>").replaceAll("ol > li:first-of-type");

QQ截图20200607103945.jpg

三、常用过滤器

1-基本过滤器有以下几个:
选择器:first  : 找出的是第一个
:last  : 找出的是最后一个
:even   找出索引为偶数
:odd    找出奇数索引
:gt(index) :  大于索引
:lt(index)   小于
:eq(index)  等于
2-代码展示:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="lib/jquery-3.5.1.js"></script>
    <title>常用过滤器</title>
  </head>
  <body>
    <ul id="first">
      <li>item1</li>
      <li>item2</li>
      <ul>
        <li>item1</li>
        <li class="red">item2</li>
        <li>item3</li>
      </ul>
      <li>item3</li>
      <li>item4</li>
      <li>item5</li>
    </ul>
    <ul id="second">
      <li>item1</li>
      <li>item2</li>
      <li>item3</li>
      <li>item4</li>
      <li>item5</li>
    </ul>
  </body>
  <script>
    var cl = console.log.bind(console);
    // cl($("ul#first"));
    // cl($("ul").filter("#first"));

    // children
    var ul1 = $("ul").filter("#first");
    cl(ul1.children());
    var children = ul1.children();
    // first():第一个
    children.first().css("background", "lightblue");
    // last(): 最后一个
    children.last().css("background", "lightblue");
    // eq(n): 返回任何一个
    children.eq(2).css("background", "lightgreen");

    // children()只限子元素
    // ul1.children(".red").css("color", "red");
    // find(): 所有层级在查询
    ul1.find(".red").css("color", "red");
    cl(ul1.find(".red"));

    // 仅获取第2个和第3个子元素
    // $("ul").filter("#second").children().slice(1, 3).css("color", "red");
    $("ul#second >li:nth-of-type(-n+3):not(li:first-of-type)").css(
      "color",
      "red"
    );
  </script>
</html>

QQ截图20200607104918.jpg
四、总结:需要多在项目中实操,才能对这些JQ知识掌握自己独立写出来,以前有接触过,但都是停留在修修改改的阶段上。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议