user3710844
user3710844

Reputation: 89

Jquery select parent class div

I'm trying to write some simple jQuery to display class bl3 when class blc3 is clicked. I've got it working to show every class bl3 when a blc3 class is clicked, but I want it to open only the specific bl3 that relates to the clicked blc3.

HTML :

<div class="product pro">
    <img class="product-img pro" src="'.$product[" imagesrc "].'"/>
    <div class="product-actions pro">
        <div class="info-block pro bl3" style="display:none;">
            <div class="product-title pro">Ships to:</div>
            <div class="product-description pro">Days:</div>
            <div class="product-sale pro">UK</div>
            <div class="product-prize pro">7</div>
            <div class="button-buy pro">Buy now</div>
            <div class="add pro">Add</div>
        </div>
    </div>
    <div class="nav titlen pro">TESTING</div>
    <div class="nav pro boxp">
        <ul>
            <li class="active blc1"><span class="icon-tag f15"></span> '.$product["price"].'
                <br>
            </li>
            <li class="blc2"><span class="icon-time f15"></span> '.$product["stime"].'
                <br>
            </li>
            <li class="blc3"><span class="icon-plane f15"></span> '.$product["sto"].'
                <br>
            </li>
            <li><span class="icon-zoom-in f15"></span> '.$product["sto"].'
                <br>
            </li>
        </ul>
    </div>
</div>

JQUERY :

$j(".blc3").click(function() {
    $j(this).parent().prev('.bl3').css('display','block');  
}); 

Unfortunately, this does not select the correct element.

The jQuery below works for displaying all elements with class bl3:

$j('.bl3').css('display','block');  

But I want to display only the one that relates to the clicked blc3.
How to just display the one appropriate bl3?

Upvotes: 1

Views: 967

Answers (1)

showdev
showdev

Reputation: 29188

I suggest the jQuery selector below. For each .blc3 that is clicked, it looks for the parent div.product and then searches for a .bl3 in that element.

$('.blc3').on('click',function(){
    $(this).closest('div.product').find('.bl3').show();
});

Documentation: closest(), find()

Test below:

$('.blc3').on('click', function() {
  $(this).closest('div.product').find('.bl3').show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="product pro">
  <img class="product-img pro" src="'.$product[" imagesrc "].'"/>
  <div class="product-actions pro">
    <div class="info-block pro bl3" style="display:none;">
      <div class="product-title pro">Ships to:</div>
      <div class="product-description pro">Days:</div>
      <div class="product-sale pro">UK</div>
      <div class="product-prize pro">7</div>
      <div class="button-buy pro">Buy now</div>
      <div class="add pro">Add</div>
    </div>
  </div>
  <div class="nav titlen pro">TESTING</div>
  <div class="nav pro boxp">
    <ul>
      <li class="active blc1"><span class="icon-tag f15"></span> '.$product["price"].'
        <br>
      </li>
      <li class="blc2"><span class="icon-time f15"></span> '.$product["stime"].'
        <br>
      </li>
      <li class="blc3"><span class="icon-plane f15"></span> '.$product["sto"].'
        <br>
      </li>
      <li><span class="icon-zoom-in f15"></span> '.$product["sto"].'
        <br>
      </li>
    </ul>
  </div>
</div>

<div class="product pro">
  <img class="product-img pro" src="'.$product[" imagesrc "].'"/>
  <div class="product-actions pro">
    <div class="info-block pro bl3" style="display:none;">
      <div class="product-title pro">Ships to:</div>
      <div class="product-description pro">Days:</div>
      <div class="product-sale pro">UK</div>
      <div class="product-prize pro">7</div>
      <div class="button-buy pro">Buy now</div>
      <div class="add pro">Add</div>
    </div>
  </div>
  <div class="nav titlen pro">TESTING</div>
  <div class="nav pro boxp">
    <ul>
      <li class="active blc1"><span class="icon-tag f15"></span> '.$product["price"].'
        <br>
      </li>
      <li class="blc2"><span class="icon-time f15"></span> '.$product["stime"].'
        <br>
      </li>
      <li class="blc3"><span class="icon-plane f15"></span> '.$product["sto"].'
        <br>
      </li>
      <li><span class="icon-zoom-in f15"></span> '.$product["sto"].'
        <br>
      </li>
    </ul>
  </div>
</div>

Upvotes: 5

Related Questions