Larger Click Radius
16 Dec 2024

Inherit Link; JavaScript Linked Inheritance

Wrapping lots of elements inside of an a tag, which is an inline element isn’t an ideal way of writing HTML. Although from a usable perspective it works, keeping elements completely semantic is essential for screen-readers and search-engines.

Creating a solution to avoid wrapping everything in <a></a> tags is not something new, and Microsoft used to use a solution very similar to keep semantics in their pages.

Essentially, this code will make the .makelink class a link, and it will get its URL from the first a-tag it finds in the DOM below it. This pre-existing script below has a few additional options to help us integrate it better in to our websites – for example if the element contains a class of .disable__link then the script simply will not run – this is useful when managing click states without removing the .makelink class. Secondly, we also identify if we need to open the link in a new window or not, and to do this we simply get the attribute of our <a></a> and look for target=”_blank”. If the condition is met, we open a new window.

It is worth noting that this will not work if managing dynamic data, and is designed to physically open a new page or window, not dynamically load in new information with an AJAX / XMLHTTP request.

See the JavaScript example;

/* JavaScript */
document.querySelectorAll(".makelink").forEach(function (fELink) {
   if(!fELink.classList.contains("disable__link")) { /* Optional if-statement for conditional logic */
      fELink.addEventListener("click", function () {
          let qSLink = fELink.querySelector("a"); /* Find the closest <a></a> */

          (qSLink.getAttribute("target") === "_blank") ? window.open(qSLink.href, "_blank") : window.location.href= qSLink.href; /* Manage target="_blank" */
      });
   }
});

See Basic HTML;


<div class="makelink">
   <a href="">My Link</a>
</div>

See additional HTML examples

<!-- HTML -->
<div class="makelink">
   <h1>Hello World!</h1>
   <h2>This is the second heading.</h2>
   <p>Lorem Ipsum Set dolor</p>

   <img src="./image.webp">

   <ol>
      <li>Feature 1</li>
      <li>Feature 2</li>
      <li>Feature 3</li>
   </ol>

   <a href="./helloworldtwo.html">Read More</a>
</div>

<div class="makelink">
   <h1>Hello World!</h1>
   <a href="./helloworldtwo.html" target="blank">Read More in a New Window</a>
</div>

If everything is successful, you should be able to click on anything in make link, and it will go to the designated link.

Ready to build something brilliant?

All Rights Reserved  | Copyright 2020 - 2025 Christopher Nathaniel