当前位置: 首页 > 知识库问答 >
问题:

在单独的类上运行jQuery函数

康文昌
2023-03-14

我有一些HTML元素,它们都有相同的标记。每个div都有一个唯一的父类。

因此,当我尝试编写一些jQuery来单独针对每个元素时,它会在所有实例上触发,而不管我是否指定要针对哪个类。我的想法是,通过使用(this)它将只针对div“box__wrapper-before”中的内容。

有人知道我错在哪里吗?

null

$('.box__wrapper--before').each(function() {
  $(this).find('.box__random').insertBefore('.box__item:nth-child(3');
});
html {
  box-sizing: border-box;
  font-size: 62.5%;
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

body {
  background: #282828;
  color: white;
  font-family: "Montserrat", sans-serif;
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1;
  margin: 0;
}

h1 {
  color: white;
  font-size: 20px;
  font-weight: 600;
  margin-bottom: 20px;
  margin-top: 0;
}

.box__wrapper {
  color: #111;
  padding-bottom: 20px;
  padding-top: 20px;
}

.box__wrapper:nth-child(odd) {
  background: green;
}

.box__wrapper:nth-child(even) {
  background: blue;
}

.box__container {
  margin-left: auto;
  margin-right: auto;
  max-width: 1200px;
}

.box__flex__wrapper {
  display: flex;
  justify-content: center;
  margin-left: -60px;
}

.box__item {
  padding-left: 60px;
  flex-basis: 20%;
  max-width: 20%;
}

.box__item span {
  align-items: center;
  border: 4px solid white;
  border-radius: 100px;
  display: flex;
  height: 60px;
  justify-content: center;
}

.box__one span,
.box__three span {
  background: #58b2eb;
}

.box__two span,
.box__four span {
  background: #ffa770;
}

.box__random span {
  background: #7fd28c;
}

.prod__cta__msg {
  background: red;
  bottom: 0;
  position: absolute;
  width: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="box__wrapper box__wrapper--before">
  <div class="box__container">
    <div class="box__flex__wrapper">
      <div class="box__item box__one">
        <span>Div One</span>
      </div>

      <div class="box__item box__two">
        <span>Div Two</span>
      </div>

      <div class="box__item box__three">
        <span>Div Three</span>
      </div>

      <div class="box__item box__four">
        <span>Div Four</span>
      </div>

      <div class="box__item box__random">
        <span>Dynamic Div 1</span>
      </div>
    </div>
  </div>
</section>

<section class="box__wrapper box__wrapper--after">
  <div class="box__container">
    <div class="box__flex__wrapper">
      <div class="box__item box__one">
        <span>Div One</span>
      </div>

      <div class="box__item box__two">
        <span>Div Two</span>
      </div>

      <div class="box__item box__three">
        <span>Div Three</span>
      </div>

      <div class="box__item box__four">
        <span>Div Four</span>
      </div>

      <div class="box__item box__random">
        <span>Dynamic Div 2</span>
      </div>
    </div>
  </div>
</section>

null

Codepen示例:https://Codepen.io/nickelse/pen/mwbdvpw

共有1个答案

唐修诚
2023-03-14

问题在于:

.insertBefore('.box__item:nth-child(3)')

它将box_random附加到所有节中。

.insertbefore可以使用指定插入点的jquery对象(而不仅仅是字符串选择器),因此您可以使用this只查找相关的第n个子项:

$('.box__wrapper--before').each(function() {
  var third = $('.box__item:nth-child(3)', this);
  $(this).find('.box__random').insertBefore(third);
});

(变量不是必需的,为清楚起见显示)

原文可以写成:

$('.box__wrapper--before').each(function() {

  var third = $('.box__item:nth-child(3)');

  $(this).find('.box__random').insertBefore(third);
});

你能看到的地方

  var third = $('.box__item:nth-child(3)');

在所有父母中选择所有项目-所以需要添加特定性。

在下面给出了一个更新的片段。在这里,第二个div中的box_random没有移动,因为它不在.box_wrapper-before中。

null

$('.box__wrapper--before').each(function() {
  $(this).find('.box__random').insertBefore($('.box__item:nth-child(3)', this));
});
html {
  box-sizing: border-box;
  font-size: 62.5%;
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

body {
  background: #282828;
  color: white;
  font-family: "Montserrat", sans-serif;
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1;
  margin: 0;
}

h1 {
  color: white;
  font-size: 20px;
  font-weight: 600;
  margin-bottom: 20px;
  margin-top: 0;
}

.box__wrapper {
  color: #111;
  padding-bottom: 20px;
  padding-top: 20px;
}

.box__wrapper:nth-child(odd) {
  background: green;
}

.box__wrapper:nth-child(even) {
  background: blue;
}

.box__container {
  margin-left: auto;
  margin-right: auto;
  max-width: 1200px;
}

.box__flex__wrapper {
  display: flex;
  justify-content: center;
  margin-left: -60px;
}

.box__item {
  padding-left: 60px;
  flex-basis: 20%;
  max-width: 20%;
}

.box__item span {
  align-items: center;
  border: 4px solid white;
  border-radius: 100px;
  display: flex;
  height: 60px;
  justify-content: center;
}

.box__one span,
.box__three span {
  background: #58b2eb;
}

.box__two span,
.box__four span {
  background: #ffa770;
}

.box__random span {
  background: #7fd28c;
}

.prod__cta__msg {
  background: red;
  bottom: 0;
  position: absolute;
  width: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="box__wrapper box__wrapper--before">
  <div class="box__container">
    <div class="box__flex__wrapper">
      <div class="box__item box__one">
        <span>Div One</span>
      </div>

      <div class="box__item box__two">
        <span>Div Two</span>
      </div>

      <div class="box__item box__three">
        <span>Div Three</span>
      </div>

      <div class="box__item box__four">
        <span>Div Four</span>
      </div>

      <div class="box__item box__random">
        <span>Dynamic Div 1</span>
      </div>
    </div>
  </div>
</section>

<section class="box__wrapper box__wrapper--after">
  <div class="box__container">
    <div class="box__flex__wrapper">
      <div class="box__item box__one">
        <span>Div One</span>
      </div>

      <div class="box__item box__two">
        <span>Div Two</span>
      </div>

      <div class="box__item box__three">
        <span>Div Three</span>
      </div>

      <div class="box__item box__four">
        <span>Div Four</span>
      </div>

      <div class="box__item box__random">
        <span>Dynamic Div 2</span>
      </div>
    </div>
  </div>
</section>
 类似资料:
  • 目前,我正在群集模式(独立群集)下使用Spark 2.0.0,群集配置如下: 工作线程:使用了4个内核:总共32个,使用了32个内存:总共54.7 GB,使用了42.0 GB 我有4个奴隶(工人)和1台主机。火花盘有三个主要部件-主部件、驱动部件、工作部件(参考) 现在我的问题是,驱动程序正在其中一个工作节点中启动,这阻碍了我在其全部容量(RAM方面)中使用工作节点。例如,如果我在运行spark作

  • 正在尝试使用“main”函数变量更新线程上运行的tkinter“textvariable”。我实现了一个基于线程的解决方案,因此tkinter mainloop后面的代码可以运行:https://stackoverflow.com/a/1835036/15409926. 请分享我如何解决此错误。如果这不是更新“textvariable”的最简单方法,请分享其他方法。 代码: 窗口不更新:Tkint

  • null 大多数文档描述了如何在Kubernetes上运行Spark集群。在Kubernetes上独立运行Spark的方法是什么?

  • 是否可以在与“主”应用程序分开的线程池中处理像这样的执行器请求? 我为什么要问?我有一个应用程序有时可能会用完所有可用的线程,而Kubernetes健康检查由于没有线程来计算健康endpoint请求而失败。 我希望确保无论应用程序的负载有多大,都处理了每个健康请求。 我在考虑可能定义一个单独的线程池来操作执行器,但我不确定如何做到这一点。

  • 问题内容: 我有一个Redshift表,看起来像这样: 所有数组元素只有一个字段。 不能保证特定字段将出现在数组的任何元素中。 字段名称可以在数组中重复 数组元素可以任意顺序 我想找一张看起来像这样的桌子: 然后,我可以将其与输入表其余部分的查询结合起来。 我曾尝试过使用Redshift JSON函数,但是由于无法在Redshift中编写函数/使用循环/具有变量,我真的看不到这样做的方法! 请让我

  • 如下图,自己在node.js中实现了一个用于记录错误的装饰器,然后发现装饰器能用在类或者类的方法中,而用在独立的方法中则会报错:Decorators are not valid here.ts(1206) 所以想请教下node.js中装饰器是否只能用于类或者类的方法上的呢