Reputation: 321
Scenario:
I have a bit tricky case here:
Upon cicking the button inside the first div block (I have named it as DIV Block A for readability), I want to display the channels which is inside the second DIV Block (I have named it as DIV Block B for readability).
The id of button from DIV Block A is:
id="sub_category_dc_button_<?=$category['category_id'];?>"
Upon clicking this button, the content inside the DIV Block B should be displayed.
Attempt 1:
For this, I have followed this approach:
$(".sub_dc_channels").on("click", function(){
$($(this).attr("data-target")).show();
});
Here is my DIV Block A:
<div class="sub_cat_buttons channel" id="dc_subcategory_button_tab">
<div class="sub_dc_channels" id="sub_dc_button">
<?php foreach ($output as $category) {
<button type="button" data-toggle="collapse"
id="sub_category_dc_button_<?=$category['category_id'];?>"
class="btn btn-primary sub_digitalchannel_button"
data-target="#Category_<?= $category['category_id'];?>">
<?= $category['category_title']?>
</button>
</div>
</div>
Here is my DIV Block B:
<?php foreach ($output as $category) {?>
<div class="channel" id="Category_<?= $category['category_id'];?>">
<div id="subchannel_list_tab">
<?php foreach ($output as $category) {?>
<?php foreach ($category['channels'] as $channels) { ?>
<img src="<?= $channels['channel_logo']; ?>"
alt="<?= $channels['channel_name']; ?>"
title="<?= $channels['channel_name']; ?>"
style="width: 100px; height: 60px;" />
<?php } ?>
<?php } ?>
</div>
</div>
<?php } ?>
Attempt 2:
I have also used this approach with the same DIV Blocks but it fails too.
$('div[id^="Category_"]').click(function() {
$(".channel").hide();
$("#subchannel_list_tab").show();
});
Issue Faced:
When I clicked the button from DIV Block A then it targets the contents inside the DIV Block B but the contents inside the DIV Block B are not shown.
What am I missing here? Or am I following the wrong approach? Suggestions are highly appreciated.
Upvotes: 0
Views: 717
Reputation: 167
You want to show dynamic data as per id of button click.You missed a target button class in selector.your issue is solved.
$(document).on("click",".sub_dc_channels .sub_digitalchannel_button",function(){
alert();
$($(this).attr("data-target")).show();
});
for reference you can click here.
Upvotes: 1
Reputation: 1016
your click is going to be triggered in the div and not in the button, it is likely that this is the problem.
Here's a dummy example of what I think you're up to.
$('.showDiv').click( function () {
let div = $(this).attr('data-target');
$(`#${div}`).show();
});
#divB {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="divA">
<button class="showDiv" data-target="divB">show div</button>
</div>
<div id="divB">
info divB
</div>
Upvotes: 1