拆分父类名称并添加到每个子元素

时间:2019-03-19 10:40:37

标签: vue.js vuejs2

我试图找到一种方法,用于从父类名中拆分值,并将每个单独的值添加到父类中的每个子对象(子元素的数量是可变的)。

可能有一个值或多个值的类名。

<div class="block-33-33-33-33">
  <div class="card block__col--33"></div>
  <div class="card block__col--33"></div>
  <div class="card block__col--33"></div>
  <div class="card block__col--33"></div>
</div>

<div class="block-50-50">
  <div class="card block__col--50"></div>
  <div class="card block__col--50"></div>
</div>

<div class="block-100">
  <div class="card block__col--100"></div>
</div>

处理此问题的最佳方法是什么?

谢谢。

3 个答案:

答案 0 :(得分:1)

您可以尝试通过以下方式使用querySelector()querySelectorAll()

var pClass = document.querySelector('div[class^=block]').classList.value.split('-');
pClass.shift(); // remove the first item

document.querySelectorAll('div.card').forEach(function(el, i){
  el.classList.add('block__col--'+ pClass[i]);
});
.block__col--33{
  font-size: 20px;
  color: red;
}
<div class="block-33-33-33-33">
  <div class="card">1</div>
  <div class="card">2</div>
  <div class="card">3</div>
  <div class="card">4</div>
</div>

答案 1 :(得分:0)

let parentDiv = $("body > div")
let parentClassArr = parentDiv.attr('class').split('-')
for (let i = 1; i < parentClassArr.length; i++) {
  parentDiv.children().eq(i - 1).addClass(parentClassArr[0] + '__col--' + parentClassArr[i])
  console.log(parentDiv.children().eq(i - 1).attr('class'))
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <div class="block-33-33-33-33">
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
  </div>
</body>

答案 2 :(得分:0)

const blocks = document.querySelectorAll("[class^=block-]");
blocks.forEach(splitParentClassNameToChildren);

function splitParentClassNameToChildren(parent) {
    const { className } = parent;
  const splitValues = className.match(/(\d\d)/g);
  splitValues.forEach((value, i) => {
    parent.children[i].classList.add(`block__col--${value}`);
  })
}

实际操作=> https://jsfiddle.net/moorthyrweb/z3jLqwn4/14/