【问题标题】:jQuery: selecting the last div only when it is oddjQuery:仅在奇数时选择最后一个 div
【发布时间】:2019-02-22 00:35:43
【问题描述】:

我正在尝试使用具有不同数量字段的两列表单来设置登录页面的样式。该页面有时会使用具有偶数个字段的表单,有时会使用具有奇数个字段的表单。我希望表单的最后一个字段在具有奇数个字段时显示全宽而不是 2 列。

我认为这需要一些 jquery,但我不太确定该怎么做。

表单的每个输入字段都由一个 class="row" 的 div 包裹。 如果表单字段的数量为奇数,我希望最后一个字段的“行”类为 width:100%。

更新:

以下是我的表单结构示例。我在底部还有两个字段,在表单加载时使用 jquery 添加了一个附加类(floatDIV),但我只希望将文本/电子邮件/电话/选择字段计为用于确定的字段数奇偶。我也无法删除任何现有的课程。

我真的找不到使用 last-child 或 nth-child 的方法,因为我正在尝试以班级为目标。

<form>
  <div class="row">
    <div class="col">
      <input id="name" name="name" type="text" class="field" placeholder="name">
    </div>
  </div>
  <div class="row">
    <div class="col">
      <input id="email" name="email" type="email" class="field" placeholder="email">
    </div>
  </div>
  <div class="row">
    <div class="col">
      <input id="phone" name="phone" type="tel" class="field" placeholder="phone">
    </div>
  </div>
  <div class="row">
    <div class="col">
      <input id="phone" name="phone" type="tel" class="field" placeholder="phone">
    </div>
  </div>
  <div class="row floatDIV">
    <div class="col">
      <div><span>some text</span></div>
    </div>
  </div>
  <div class="row floatDIV">
    <div class="col">
      <label for="content" class="label"><span>some text</span></label>
      <div class="checkbox">
        <input name="checkbox" id="checkbox" type="checkbox" value="yes" class="field">
      </div>
    </div>
  </div>
  <div class="button">
    <button type="submit" class="btn">Submit</button>
  </div>
  <input type="hidden" name="formid" class="field" value="4">
  <input type="hidden" name="pageid" class="field" value="5">
</form>

我目前拥有的选择最后一个奇数 div,即使表单有偶数个字段,这不是我想要的。我希望它只将新样式添加到没有 floatDIV 类的最后一行,前提是它是一个奇数字段。

$('.row:odd').not(".floatDIV").last().addClass('last');

【问题讨论】:

  • 请至少向我们展示您要操作的标记示例。
  • .row:nth-child(odd):last-child 就够了
  • CSS Last Odd Child?的可能重复

标签: jquery html forms


【解决方案1】:

我认为这是您正在寻找的东西:

var evenodd;

if (Math.floor($('.row').length / 2) === ($('.row').length / 2)) {
  console.log('even');
} else {
  console.log('odd');
  $('.columns').addClass('odd');
}
.columns{
  box-sizing:border-box;
}

.row {
  display: inline-block;
  width: 48%;
  border: 1px solid red;
}

.columns.odd .row:last-child {
  width: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="columns">

  <div class="row">
    A
  </div>
  <div class="row">
    B
  </div>
  <div class="row">
    C
  </div>
  <div class="row">
    D
  </div>
  <div class="row">
    E
  </div>
</div>

【讨论】:

  • 正如我在上面的评论中所说的 .row:nth-child(odd):last-child 而不是 .columns.odd .row:last-child 将完成这项工作.. 根本不需要使用 javascript 代码
  • 我认为只有当他有奇数个项目时才会这样。他说这可能是奇数或偶数。
  • 刚刚测试过,你是 100% 正确的。谢谢你教我一些东西!
  • NVM .. 我们都还在学习 ;) .. 祝你有美好的一天 :-) @Jennifer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2013-01-18
  • 2012-12-20
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
相关资源
最近更新 更多