Skip to content Skip to sidebar Skip to footer

Javascript - Get Every Div That Doesn't Contain A Child Specific Element

I have a div group inside some that I want to have a class for every div that doesn't have a specific element like h1 For Example :

Solution 1:

Step 1: Get all div elements. Step 2: Filter the collection, keeping those that do not have an h1 descendant. Step 3: For each matching element, map the element to its className property. Step 4: There is no step 4.

[...document.querySelectorAll('div')].filter(d => !d.querySelector('h1')).map(d => d.className)

constMy_HTML = `
<div class="container">
  <div class="parents">
     <h1>AAAA</h1>
     <div class="content">
       <p>Hello</p>
     </div>
  </div>
</div>
`;
const parser = newDOMParser();
const doc = parser.parseFromString(My_HTML, "text/html");
const everyDiv= [...doc.querySelectorAll('div')].filter(d => !d.querySelector('h1')).map(d => d.className);

console.log(everyDiv)

Solution 2:

Consider the following.

$(function() {
  $(".container *").each(function(i, el) {
    console.log("Check Elements", $(el).prop("nodeName"), $(el).attr("class"));
    if (!$(el).is("h1")) {
      console.log("Class: " + $(el).attr("class"));
    }
  });
});
<scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><divclass="container"><divclass="parents"><h1>AAAA</h1><divclass="content"><p>Hello</p></div></div></div>

This itereates each of the elements within .container; only looking for a Class if it is not an <h1> element.

You could also use the :not() selector.

$(function() {
  $(".container *:not(h1)").each(function(i, el) {
    console.log("Check Elements", $(el).prop("nodeName"), $(el).attr("class"));
  });
});

This will select the child elements that are not H1.

Post a Comment for "Javascript - Get Every Div That Doesn't Contain A Child Specific Element"