Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Соседний элемент выше при клике (https://javascript.ru/forum/jquery/73669-sosednijj-ehlement-vyshe-pri-klike.html)

Timurkin 05.05.2018 20:08

Соседний элемент выше при клике
 
Добрый вечер.
На странице есть МНОГО одинакового HTML:
<div class="caption">
	<p class="One">Текст</p>
	<div class="collapse">
		<p>Текст2</p>  
		<a class="showmore">Ссылка</a>
	</div> 
</div>

Как мне сделать, чтобы при клике на <a class="showmore">Ссылка</a> у верхнего элемента p удалялся бы его класс One ?
Пробую так:
$(".collapse .showmore").click(function(e) {
		 	$(this).closest(".One").removeClass("One");
			e.preventDefault(); 
			})

Использую this, так как без него срабатывать будут несколько таких блоков. Пробовал и parents и siblings, по итогу не получается ничего(

j0hnik 05.05.2018 20:12

$(".collapse .showmore").click(function(e) {
	$(this).parents().prev().removeClass("One");
	e.preventDefault(); 
});

j0hnik 05.05.2018 20:14

$(".collapse .showmore").click(function(e) {
	$(this).closest(".caption").children('.One').removeClass("One");
	e.preventDefault(); 
});

рони 05.05.2018 20:23

Timurkin,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .One{
      background-color: #FF0000;
  }
  .caption  {
      border: 1px solid #0000FF
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
       $(".caption").on("click", ".showmore", function(e) {
		 	$(".One", e.delegateTarget).removeClass("One");
			e.preventDefault();

			})

});
  </script>
</head>

<body>
<div class="caption">
	<p class="One">Текст</p>
	<div class="collapse">
		<p>Текст2</p>
		<a class="showmore">Ссылка</a>
	</div>
</div>
<div class="caption">
	<p class="One">Текст</p>
	<div class="collapse">
		<p>Текст2</p>
		<a class="showmore">Ссылка</a>
	</div>
</div>
</body>
</html>

Timurkin 08.05.2018 21:17

Спасибо большое за такой оперативный ответ, помогло!)
Правда у меня в итоге внутри p class="One" оказался еще тег a, в итоге обратился к нему следующим образом:
$(".collapse .showmore").click(function(e) {
$(this).closest(".caption").children('.One').children('a').removeClass("One");
e.preventDefault(); 
});

Timurkin 08.05.2018 21:20

Рони, ваша конструкция сложная для меня, буду разбираться на досуге. Спасибо за ответ!

j0hnik 08.05.2018 23:48

$(".collapse .showmore").click(function(e) {
$(this).closest(".caption").find('.One>a').removeClass("One");
e.preventDefault(); 
});


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