Как я могу установить активный класс на верхний ли, если я нажму на любой дочерний элемент - PullRequest
0 голосов
/ 25 февраля 2019

У меня динамическое меню php из базы данных, похожее на эту html структуру.

Если я нажму на LED TV или TV CATEGORIES, я хочу установить активный класс на ALL CATEGORIES, например: dropdown-item dropdown-toggle active

как я могу сделать это в php или jquery?

<li class="dropdown"><a id="20" class="dropdown-item dropdown-toggle " href="index.php?page=AllCategories&categoriesgroup=allcategoriesgroup"> ALL CATEGORIES<i class="fas fa-caret-down"></i></a>
    <ul class="dropdown-menu">
        <li class="dropdown-submenu dropdown-reverse"><a id="402" class="dropdown-item" href="index.php?page=productCategories&categories=tvcategories">TV CATEGORIES<i class="fas fa-caret-down"></i></a>
            <ul class="dropdown-menu">
                <li class=""><a id="403" class="dropdown-item" href="index.php?page=productDetail&product=ledtv">LED TV</a></li>
            </ul>
        </li>
    </ul>
</li>

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

$(document).on('click', '.test', function () {
		var newids=$(this).data('id');
		$(this).parents().children('#'+newids).addClass("active");
	});
.active{
color:red !important;	
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li class="dropdown"><a id="20" class="dropdown-item dropdown-toggle " href="#"> ALL CATEGORIES<i class="fas fa-caret-down"></i></a>
<ul class="dropdown-menu">
  <li class="dropdown-submenu dropdown-reverse"><a id="402" class="dropdown-item" href="#">TV CATEGORIES<i class="fas fa-caret-down"></i></a>
    <ul class="dropdown-menu">
      <li class="test" data-id="20"><a id="403"  class="dropdown-item" href="#">LED TV</a></li>
    </ul>
  </li>
</ul>
  </li>
</ul>

$(document).on('click', '.test', function () {
		var newids=$(this).data('id');
		$(this).parents().children('#'+newids).addClass("active");
	});
.active{
color:red !important;	
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li class="dropdown"><a id="20" class="dropdown-item dropdown-toggle " href="#"> ALL CATEGORIES<i class="fas fa-caret-down"></i></a>
    <ul class="dropdown-menu">
      <li class="dropdown-submenu dropdown-reverse"><a id="402" class="dropdown-item" href="#">TV CATEGORIES<i class="fas fa-caret-down"></i></a>
        <ul class="dropdown-menu">
          <li class="test" data-id="20"><a id="403"  class="dropdown-item" href="#">LED TV</a></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
0 голосов
/ 25 февраля 2019

Вы можете использовать .parents("li").last(), чтобы получить верхний ли.

$(".dropdown-item").click(function() {
  $(this).parents("li").last().toggleClass("active");
});

$(".dropdown-item").click(function() {
  $(this).parents("li").last().toggleClass("active");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li class="dropdown"><a id="20" class="dropdown-item dropdown-toggle " href="#"> ALL CATEGORIES<i class="fas fa-caret-down"></i></a>
    <ul class="dropdown-menu">
      <li class="dropdown-submenu dropdown-reverse"><a id="402" class="dropdown-item" href="#">TV CATEGORIES<i class="fas fa-caret-down"></i></a>
        <ul class="dropdown-menu">
          <li class=""><a id="403" class="dropdown-item" href="#">LED TV</a></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...