Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Поменять дочерний элемент по клику на родительский (https://javascript.ru/forum/jquery/74167-pomenyat-dochernijj-ehlement-po-kliku-na-roditelskijj.html)

Win_D 19.06.2018 15:26

Поменять дочерний элемент по клику на родительский
 
Здравствуйте. На этом сайте в левой части страницы есть навигационное меню по категориям (скрин).

При клике на "+" показываются подкатегории и значок плюса меняется на минус, а при повторном клике минус снова меняется на плюс (скрин). Однако плюсы и минусы меняются у всех элементов списка. Подскажите пожалуйста, как на jQuery менять плюс на минус и обратно только у выбранного элемента?

Вот текущий код:
$(document).ready(function() {
  $('.category-item').on('click', '.show-submenu', function() {
    if($('.fa-plus').css('display') === 'inline-block') {
      $('.fa-plus').css('display', 'none');
      $('.fa-minus').css('display', 'inline-block');
    } else {
      $('.fa-minus').css('display', 'none');
      $('.fa-plus').css('display', 'inline-block');
    }
  $(this).siblings('.subcategories').slideToggle(0);
  });
});

рони 19.06.2018 15:35

Win_D,
$(document).ready(function() {
  $('.category-item').on('click', '.show-submenu', function() {
    if($('.fa-plus', this).css('display') === 'inline-block') {
      $('.fa-plus', this).css('display', 'none');
      $('.fa-minus', this).css('display', 'inline-block');
    } else {
      $('.fa-minus', this).css('display', 'none');
      $('.fa-plus', this).css('display', 'inline-block');
    }
  $(this).siblings('.subcategories').slideToggle(0);

  });
});

j0hnik 19.06.2018 15:41

<div><span>+</span></div>
	<div><span>+</span></div>
	<div><span>+</span></div>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
	<script>
$('div').click(function(){
	this.firstChild.textContent = this.textContent=='+'?'-':'+';
});
	</script>

рони 19.06.2018 16:07

Win_D,
j0hnik,
проще менять класс родителя

Win_D 19.06.2018 16:34

Цитата:

Сообщение от рони (Сообщение 487717)
Win_D,
$(document).ready(function() {
  $('.category-item').on('click', '.show-submenu', function() {
    if($('.fa-plus', this).css('display') === 'inline-block') {
      $('.fa-plus', this).css('display', 'none');
      $('.fa-minus', this).css('display', 'inline-block');
    } else {
      $('.fa-minus', this).css('display', 'none');
      $('.fa-plus', this).css('display', 'inline-block');
    }
  $(this).siblings('.subcategories').slideToggle(0);

  });
});

Спасибо большое, всё отлично работает :thanks:


Часовой пояс GMT +3, время: 09:46.