千峰jquery进阶内容

news/2024/7/10 23:43:31 标签: jquery, javascript, 前端

封装选项卡:
在这里插入图片描述
HTML部分:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <script src="../jQuery/jQuery.min.js"></script>
  <link rel="stylesheet" href="tabs.css" />
  <body>
    <div id="container">
      <ul class="header"></ul>
      <ul class="box1"></ul>
    </div>
  </body>
  <script src="tabs.js"></script>
  <script>javascript">
    //动态获取数据 创建节点
    // 初始化
    var list = [
      {
        title: "qqq",
        content: "qqq内容",
      },
      {
        title: "qq1q",
        content: "qq1q内容",
      },
      {
        title: "qq2q",
        content: "qq2q内容",
      },
      {
        title: "qq3q",
        content: "qq3q内容",
      },
    ];
    var oHeaderLI = list
      .map(
        (item) => `
<li>${item.title}</li>`
      )
      .join(" ");
    $(".header").html(oHeaderLI);

    var oContentLI = list
      .map(
        (item) => `
<li>${item.content}</li>`
      )
      .join(" ");
    $(".box1").html(oContentLI);
    $("#container").tabs(1);
  </script>
</html>

CSS部分:

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}
ul li {
  list-style: none;
}
.header {
  display: flex;
  width: 360px;
  height: 50px;
}
.header li {
  flex: 1;
  height: 50px;
  text-align: center;
  border: 2px solid black;
  cursor: pointer;
}
.header .active {
  background-color: #bb1890;
}

.box1 li {
  left: 0;
  top: 0;
  width: 360px;
  height: 150px;
  background-color: aquamarine;
  border: 1px solid yellow;
  display: none;
}
.box1 .active {
  display: block;
}

JS部分:


    // 封装到一个方法中:
    $.fn.extend({
      tabs: function (index) {
        var oli = this.find(".header li");
        var obox = this.find(".box1 li");
        oli.eq(index).addClass("active");
        obox.eq(index).addClass("active");

        oli.click(function () {
          $(this).addClass("active").siblings().removeClass("active");
          //获取索引值,赋给下面的的
          //   console.log($(this).index());
          var index = $(this).index();
          //   obox.eq(index).addClass("active").siblings().removeClass("active");
          obox.removeClass("active").eq(index).addClass("active");
        });
      },
    });
    $("#container").tabs(1);
 

动态删除:

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="../jQuery/jQuery.min.js"></script>
  </head>

  <body>
    <ul id="list"></ul>
  </body>
  <script>javascript">
    // 用JS创建一个列表,列表里面放入按钮,再把列表放入HTML中
    var arr = ["111", "222", "333", "444"];
    for (var i = 0; i < arr.length; i++) {
      $(`<li>${arr[i]}
        <button id="btn">删除</button>
        </li>`).appendTo($("#list"));
    }

    // 这种方法去绑定现有button,不会对后来添加的button生效
    // $("#list #btn").click(function () {
    //   //   $("#btn").parent().remove();
    //   //注意,这里面是this
    //   $(this).parent().remove();
    // });

    // 因此,使用事件委托,是一个好方法
    $("#list").on("click", "button", function () {
      $(this).parent().remove();
    });
    var li = $(`<li>555<button id="btn">删除</button></li>`);
    li.appendTo("#list");
  </script>
</html>

克隆:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <script src="../jQuery/jQuery.min.js"></script>
  <body>
    <div class="box">
      <ul>
        <li>ni</li>
        <li>ni</li>
        <li>ni</li>
      </ul>
    </div>
    <div class="center">
      <hr />
    </div>
  </body>
  <script>javascript">
    $(".box")
      //clone 里面传入参数true代表把绑定的事件也一起克隆过来
      .clone()
      .prop("id", "box2")
      .insertAfter(".center")
      .css("color", "yellow")
      .css("background", "red");
  </script>
</html>

删除和替换:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="../jQuery/jQuery.min.js"></script>
  </head>
  <body>
    <div id="box">
      000
      <div id="box1">111</div>
      <span>qwu</span>
      <span>qwu</span>
      <span>qwu</span>
      <div id="box2">222</div>
    </div>
  </body>
  <script>javascript">
    // 删除自身 remove
    // $("#box #box1").eq(0).remove();

    //empty 清空内部
    // $("#box").empty();
    //或者内部赋值为空
    // $("#box").html(" ");

    // 替换
    var odiv = $("<div>hello</div>");
    $("#box span").replaceWith(odiv);
    //另一种写法:
    // odiv.replaceAll($("#box span"));
  </script>
</html>

深浅拷贝:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <script src="../jQuery/jQuery.min.js"></script>
  <body></body>
  <script>javascript">
    var obj1 = {
      name: "heFan",
      location: {
        city: "nanYang",
        province: "XinYe",
        a: { b: { c: 1 } },
        hobby: ["打球", "看美女", "旅游"],
      },
    };
    var obj2 = {};
    // $.extend(obj2, obj1);
    // // 注意,浅拷贝改值另一个也会跟着改
    // obj2.location.city = "郑州";
    // console.log(obj2);
    // console.log(obj1);

    // 深拷贝
    $.extend(true, obj2, obj1);
    // 加上参数true就实现了深拷贝,改值不影响另一个
    obj2.location.city = "洛阳";
    obj1.location.city = "武汉";
    console.log(obj2);
    console.log(obj1);
  </script>
</html>


http://www.niftyadmin.cn/n/67503.html

相关文章

Yolo v5 pytorch模型转onnx用c++进行推理

本文介绍如何使用u版的yolov5 模型转成 onnx模型&#xff0c;使用python代码推理onnx模型&#xff0c;然后再使用c代码推理onnx模型,本文使用yolov5 s版本&#xff0c;在m,l,x都试过可行环境配置 :1 u版的yolov5 4.0 版本&#xff0c;其他版本没有试过 https://github.com/ultr…

Redux 与 Vuex 的区别总结

Redux 工作流程 首先,用户(通过 view)发送 Action,发送方式就用到了 dispatch 方法。然后,Store 自动调用 Reducer,并传入俩个参数,当前 State 和 收到的 Action。而 Reducer 会返回新的 State。最后,Store 根据接收到的 State,判断是否发生变化。一旦发生变化,Store…

C#开发的OpenRA动态加载插件DLL里的类实现

C#开发的OpenRA动态加载插件DLL里的类实现 由于这款游戏的设计是为了开源设计, 并且可以让不同个人或团体实现自己的游戏, 那么每个人实现的代码是不一样的,算法也是不一样的。 并且可能也拿不到代码一起编译生成一套运行的代码。 这时候,就要考虑使用动态加载类的功能。 意…

uniapp实现app检查更新与升级-uni-upgrade-center详解

app检查更新与升级 参考链接&#xff1a; 升级中心uni-upgrade-center - App uni-admin h5 api App资源在线升级更新 uni-app使用plus注意事项 关于在线升级&#xff08;WGT&#xff09;的几个疑问 什么是升级中心uni-upgrade-center uniapp官方开发的App版本更新的插件&#…

dva + antd 报错

学习 dva 》 按照dva指南学习、安装 dva-cli、引入antd的报错问题解决 1、在执行命令 npm install antd babel-plugin-import --save时报错 报错类似“A complete log of this run can be fund in : … " 解决&#xff1a;换成cnpm 或者 yarn 进行安装 举例在安装history的…

ElasticSearch之RestClient操作索引库和文档

前言&#xff1a;上文介绍了使用DSL语言操作索引库和文档&#xff0c;本篇文章将介绍使用Java中的RestClient来对索引库和文档进行操作。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们&#x1f609;&#x1f609;。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x…

前端框架LayUI

Bootstrap框架 Bootstrap让前端开发更快速、简单。所有开发者都能快速上手、所有设备都可以适配、所有项目都适 用。 可以直接使用Bootstrap提供的 CSS 样式表&#xff0c;Bootstrap的源码是采用最流行的CSS预处理工具Less和Sass开发的。可以直接采用预编译的CSS文件快速开发…

2022年FIT2CLOUD飞致云开源成绩单

2023年2月15日&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云发布《2022年开源成绩单》&#xff0c;盘点公司2022年全年在开源软件产品与社区运营方面的表现。目前&#xff0c;飞致云旗下的核心开源软件组合包括JumpServer开源堡垒机、DataEase开源数据可视化分析平台、Me…