如果父类具有类,则Javascript添加类

时间:2017-10-04 13:09:08

标签: javascript jquery

如果其中一位父母有某个class,我想向div添加第二个class 这就是我所做的:

var h = document.querySelectorAll('h1,h2,h3,h4,p'); //GET ALL ELEMENTS
for (var i = 0; i < h.length; i++) { // LOOP THROUGH IT AND ADD A CLASS
    if (h[i].classList.length === 0) {
        h[i].classList.add("fontFit");
    }
}

var image_large = document.getElementsByClassName('image_large');
var fontFit = document.getElementsByClassName('fontFit');

if ($(fontFit).parents().hasClass('image_large')){ //IF `fontFit` has a parent named `image_large`; execute the `for` loop.
    for (var j = 0; j < image_large.length; j++) {
        if (fontFit[j].classList.length === 1) {
            fontFit[j].classList.add('addClass');
        }
    }
}

它不会给我一个错误,但我不知道它为什么不起作用。

1 个答案:

答案 0 :(得分:0)

您的代码遇到逻辑错误。您的代码似乎假设首先执行if语句,fontFit中的所有元素都将具有类image_large的父级。但事实并非如此,有些人可能没有,你宁愿在循环中进行测试

for (var j = 0; j < fontFit.length; j++) {
  //note uses Element#closest, a more recently added DOM method
  //if no parent with that class is found null is returned
  if( fontFit[j].closest('.image_large') ){
    fontFit[j].classList.add('addClass');
  }
}

当然,您可以通过使用正确的选择器直接查找属于fontFit的{​​{1}}类的所有元素,然后循环遍历该集合

image_large