Reputation: 782
I have a situation like this - When a link is clicked (i.e.,Click1, Click2 etc), I want to get the count (number) of the immediate div's under "tracker". In this example, the number of div's under first "tracker" is 3 and under second tracker, it is 2. So, if I click on (say) Click2, it should alert 3. I am always getting 1.
Any help would be highly appreciated. Thanks in advance.
$(document).on("click", ".connect", function(ev) {
console.log($(this).parents(".tracker > div.item").length);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="main">
<div class="tracker">
<div class="item"><a href="#" class="connect">Click1</a></div>
<div class="item"><a href="#" class="connect">Click2</a></div>
<div class="item">
<div class="sub_item"><a href="#" class="connect">Click3</a></div>
</div>
</div>
<div class="tracker">
<div class="item"><a href="#" class="connect">Click4</a></div>
<div class="item"><a href="#" class="connect">Click5</a></div>
</div>
</div>
Upvotes: 1
Views: 33
Reputation: 61114
You're using a selector for the parent that includes its child element. That won't get you the right parent. Select the correct ancestor first, then the children.
$(document).on("click", ".connect", function(ev) {
console.log($(this).parents(".tracker").children('.item').length);
setTimeout(function() {
console.clear();
}, 800);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="main">
<div class="tracker">
<div class="item"><a href="#" class="connect">Click1</a></div>
<div class="item"><a href="#" class="connect">Click2</a></div>
<div class="item">
<div class="sub_item"><a href="#" class="connect">Click3</a></div>
</div>
</div>
<div class="tracker">
<div class="item"><a href="#" class="connect">Click4</a></div>
<div class="item"><a href="#" class="connect">Click5</a></div>
</div>
</div>
Upvotes: 3