5

i have this basic html structure:

<div class=a>
  <div class=m></div>
  <div class=m></div>
</div>
<div class=b>
  <div class=m></div>
  <div class=m></div>
</div>

now i want to iterate over all m's but also would like to know if i am in a or b. using basic jquery syntax each i fail to do find this out.

$('.m').each(function(index) {
    // how do i know if this m is part of a or b ?
});

7 Answers 7

8

$(this).parent().hasClass("a") or $(this).parent().hasClass("b")

Sign up to request clarification or add additional context in comments.

Comments

1
if($(this).parent().hasClass('a'))

And same for b, it should work.

Comments

1

If you care, then I'd separate the selectors like this:

$('.a .m').each(function(index) {
    // now I'm on .a items
});

$('.b .m').each(function(index) {
    // now I'm on .b items
});

Comments

0
$('.m').each(function(index) {
    this.parentNode.getAttribute( "class" );
});

Comments

0

For example, check the parent is .a

if($(this).parent().is('.a'))

Comments

0

You could use the .closest method:

var $this = $(this);
if ($this.closest("a").length === 1) {
    alert("I'm in an a div");
}
else {
    alert("I'm in a b div");
}   

Comments

0

You can check the class of the parent element inside your function to identify if you are in 'a' or 'b'

$('.m').each(function() {
     var parentClass = $(this).parent().attr('class');
});

So, the parentClass var should have a value of either 'a' or 'b'

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.