Far Sighter
Far Sighter

Reputation: 201

Jquery addclass issue

Here is my html structure

  <ul>
    <li>Main 1
        <ul>
            <li><a href=''>Child 1-1</a></li>
            <li><a href=''>Child 2-1</a></li>
            <li><a href=''>Child 3-1</a></li>
            <li><a href=''>Child 4-1</a></li>
        </ul>   
    </li>
    <li>Main 2
        <ul>
            <li><a href=''>Child 1-2</a></li>
            <li><a href=''>Child 2-2</a></li>
            <li><a href='' class='selected'>Child 3-2</a></li>
            <li>Child 4-2</li>
        </ul>   
    </li>
    <li>Main 3</li>
</ul>

Now What I need is that on document.ready jquery checks that which <li>'s <a> has class 'selected'. If it finds one it put class 'mainselected' on its parent <li> and a class 'listul' on it <ul> so that the code will look like that

<ul>
    <li>Main 1
        <ul>
            <li><a href=''>Child 1-1</a></li>
            <li><a href=''>Child 2-1</a></li>
            <li><a href=''>Child 3-1</a></li>
            <li><a href=''>Child 4-1</a></li>
        </ul>   
    </li>
    <li class='mainselected'>Main 2
        <ul class='listul'>
            <li><a href=''>Child 1-2</a></li>
            <li><a href=''>Child 2-2</a></li>
            <li><a href='' class='selected'>Child 3-2</a></li>
            <li>Child 4-2</li>
        </ul>   
    </li>
    <li>Main 3</li>
</ul>

Can anyone please give me a jquery code for this.

Thanks

Upvotes: 1

Views: 135

Answers (2)

Shawn Chin
Shawn Chin

Reputation: 86954

$(function() {  // on DOM ready
    $("ul > li > ul > li > a.selected")     // explicitly search in nested ul
        .closest("ul").addClass("listul")   // assing ".listul" to parent ul
        .parent().addClass("mainselected"); // assign ".mainselected" to containing li
});

Upvotes: 1

fehays
fehays

Reputation: 3167

$(function(){     
  $('li a.selected').closest('ul').addClass('listul')
    .parent().addClass('mainselected');    
});

Upvotes: 2

Related Questions