Elementor Loop Grid Give Each Item Its Own Popup

Elementor Loop Grid Give Each Item Its Own Popup

Table of Contents

In this tutorial, I will show you how to use the Elementor Loop Grid element, and a custom loop, to create a design where each item in the grid has its own popup and popup content.

We will not be creating a different popup for each item, of course. Instead, we will be using the loop template itself and create our popup template in there, along with our card template.

See the demo here:


  • Fully custom loop and popup template
  • Works really well with CPTs
  • Lightweight and performant setup
  • Compatible with the "load more" functionality
  • Open popup on page load with a dynamic URL*
  • Customize the code to change the arrows and lightbox styling to your liking**

*Visit this URL for an example : https://templates.element.how/elementor-loop-grid-popups-template/#suzy-chen

**For optimal results, you will need to be familiar with CSS and HTML. Give my CSS Course for Elementor Users a go to get you started, if you didn't already.

Let's get started!

First, let's import the templates

This is a premium tutorial. Purchase access to unlock the full tutorial.

Access tutorial

  • Gain Access to This TutorialiUnlock complete access to the current tutorial: Elementor Loop Grid Give Each Item Its Own Popup
  • Future UpdatesiYou will get access to all future updates to this tutorial.
  • Enjoy Unlimited UsageiUse on as many of your own sites or your clients sites as you wish.

    Note that reselling or redistributing is not permitted.
$39* Purchase access

Access everything

  • Unlock every premium tutorial on Element.howiGet access to the entire library of premium tutorials on Element.how
    Preview premium tutorials
  • Get access to the CSS course for Elementor usersiAccess the complete 14 HTML chapters, 30 CSS chapters and 7 Elementor Projects.Learn more
  • Simple CSS Grid For ElementoriAn Elementor Addon to Create Awesome Grid Layouts in a Single Click for Containers, Galleries and Loop Grid. Learn more
  • free extra: ShapeDividers.com Premium AccessiLifetime Premium Access to ShapeDividers.comVisit ShapeDividers.com
  • 30 day money backiNo questions asked money back. Not what you expected? Get a refund.
  • One-time payment of only $299iNo hidden fees or subscriptions.

    Sales taxes added where applicable.
  • Limited supportiGet help when you need it. Support includes getting things working as intended.

    Support excludes customization work.
  • Lifetime access to everything Element.howiThe price reflects what is currently available on Element.how. All future updates are included, but none are promised. You pay for what is available now, and the rest is a sweet extra.

    I will say that it is definitely my intention to keep adding tutorials to Element.how.
  • Launch offer discounts!iThis all inclusive package is freshly released and to celebrate, there is a special discount available:

    10% for new customers with coupon code LAUNCH10

    20% for existing customers with coupon code LAUNCH20

    30% for CSS Course customers with coupon code LAUNCH30_CSS_STUDENT

    Available for a limited time only.
$299* Purchase All Access
* All prices are USD. Applicable taxes will be charged at checkout. Have a question? email me

Element.how also provides premium tutorials showing awesome advanced designs, check them out here.

Looking for something else? Search across 2445 Elements right here:

Checkout the Elementor Addon Finder directly


9 Responses

  1. Great Job!
    Is it possible to have the arrows at the top of the popup to have something like that:
    (left arrow | actual post/all posts | right arrow)? For example in an seperate html so I can aligne it perfectly
    Best regards

    1. Hey Robert!

      Yes this should be possible. Although from your description i'm not 100% certain what you are looking for here exactly... but to change the position of the arrows, you can simply modify the CSS for them.

      This part:

      .popupSection_arrowNav {
      position: fixed;
      top: 50%;
      transform: translateY(-50%);
      left: 4%;
      cursor: pointer;
      z-index: 99999;
      display: none;
      animation: fadeElemIn 0.6s forwards ease 0.3s;
      opacity: 0;
      .popupSection_arrowNav.popupSection_rightArrow {
      left: initial;
      right: 4%;

      So, you could change top: 50%; to top: 10%; , for example. that would place them near the top. Adjust left and right properties to position them away from the sides.

      Good luck and let me know how it goes!

  2. Thank you for your quick response. Maybe my question was a bit confusing. What I mean is something like you can see on this page: https://eightseven.ch/ . If you scroll down to the "Wohnungen" section you will find a list. Clicking on any of the items in this list will open a popup. There, the "Previous" and "Next" buttons are perfectly positioned in the popup.
    So is it possible to use the button widget or an additional widget to trigger the next or previous item?
    With additional widgets I can adjust the positioning perfectly to all other elements in the popup and also the responsive design becomes easier.
    Thanks in advance

    1. Hey Robert! I updated the code in the tutorial (and in the copy paste template) to add compatibility with this.

      Simply give any element within your Loop Template the class name
      popupSection_leftArrow or

      and clicking that element will now navigate through the popups.


      1. Yes certainly, this is possible. Simply give your element(s) you want to act as closers the class name popupSection_closePopupA11y


  3. I already tried that. Adding a class doesn't work and adding it as attribute works only at the boundaries of the widgets, which means if you click on the text/icon of the button nothing happens.

    1. Hey Robert!

      Change this line:

      if (event.target !== e) return;

      To this:

      if (event.target !== e && !event.target.closest('.popupSection_closePopupA11y')) return;

      Adding it as a class should be fine too, no need to use attributes.

      If you prefer you can just import the code from the tutorial again, I updated it.


Leave a Reply