Как найти соседний элемент jquery

.siblings( [selector ] )Returns: jQuery

Description: Get the siblings of each element in the set of matched elements, optionally filtered by a selector.

  • version added: 1.0.siblings( [selector ] )

    • selector

      A string containing a selector expression to match elements against.

Given a jQuery object that represents a set of DOM elements, the .siblings() method allows us to search through the siblings of these elements in the DOM tree and construct a new jQuery object from the matching elements.

The method optionally accepts a selector expression of the same type that we can pass to the $() function. If the selector is supplied, the elements will be filtered by testing whether they match it.

Consider a page with a simple list on it:

1

2

3

4

5

6

7

<li class="third-item">list item 3</li>

If we begin at the third item, we can find its siblings:

1

$( "li.third-item" ).siblings().css( "background-color", "red" );

The result of this call is a red background behind items 1, 2, 4, and 5. Since we do not supply a selector expression, all of the siblings are part of the object. If we had supplied one, only the matching items among these four would be included.

The original element is not included among the siblings, which is important to remember when we wish to find all elements at a particular level of the DOM tree. However, if the original collection contains more than one element, they might be mutual siblings and will both be found. If you need an exclusive list of siblings, use $collection.siblings().not($collection).

Examples:

Find the unique siblings of all yellow li elements in the 3 lists (including other yellow li elements if appropriate).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

<title>siblings demo</title>

<script src="https://code.jquery.com/jquery-3.7.0.js"></script>

<li class="hilite">Three</li>

<li class="hilite">Nine</li>

<li class="hilite">Eleven</li>

<p>Unique siblings: <b></b></p>

var len = $( ".hilite" ).siblings()

Demo:

Find all siblings with a class “selected” of each div.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<title>siblings demo</title>

<script src="https://code.jquery.com/jquery-3.7.0.js"></script>

<div><span>Hello</span></div>

<p class="selected">Hello Again</p>

$( "p" ).siblings( ".selected" ).css( "background", "yellow" );

Demo:

Can you help me with this jQuery selector?

$(".auctiondiv .auctiondivleftcontainer .countdown").each(function () {
    var newValue = parseInt($(this).text(), 10) - 1;
    $(this).text(newValue);

    if (newValue == 0) {
        $(this).parent().fadeOut();
        chat.verify($(this).parent().parent().attr('id'));
    }
});

Basically, I want to select the element with .bidbutton class that belongs in the same parent as the .countdown in the each loop:

<div class="auctiondivleftcontainer">
    <p class="countdown">0</p>
    <button class="btn primary bidbutton">Lance</button>                            
</div>  

And then apply this to that button:

$(button here).addClass("disabled");
$(button here).attr("disabled", "");

Tchami's user avatar

Tchami

4,6271 gold badge32 silver badges45 bronze badges

asked Sep 18, 2011 at 17:49

Only Bolivian Here's user avatar

Use jQuery .siblings() to select the matching sibling.

$(this).siblings('.bidbutton');

answered Sep 18, 2011 at 17:52

Madara's Ghost's user avatar

Madara’s GhostMadara’s Ghost

171k50 gold badges263 silver badges309 bronze badges

2

$(this).siblings(".bidbutton")

answered Sep 18, 2011 at 17:52

JohnD's user avatar

$("h2").siblings().css({"color": "blue"});

Samuel Liew's user avatar

Samuel Liew

76k107 gold badges156 silver badges257 bronze badges

answered Sep 15, 2015 at 6:07

Sourav Basak's user avatar

Sourav BasakSourav Basak

4861 gold badge4 silver badges15 bronze badges

you can use 
$(this).siblings(".bidbutton").addClass("disabled");
$(this).siblings(".bidbutton").attr("disabled","");

answered Mar 6, 2021 at 10:40

Sarasjd's user avatar

$("selector").nextAll(); 
$("selector").prev(); 

you can also find an element using Jquery selector

$("h2").siblings('table').find('tr'); 

Jean-François Fabre's user avatar

answered May 4, 2015 at 13:01

Barath Kumar's user avatar

you can select a sibling element using jQuery

 <script type="text/javascript">
    $(document).ready(function(){
        $("selector").siblings().addClass("classname");
    });
 </script>

Demo here

answered Apr 22, 2019 at 5:41

Developer's user avatar

DeveloperDeveloper

94012 silver badges8 bronze badges

If you want to select a specific sibling:

var $sibling = $(this).siblings('.bidbutton')[index];

where ‘index’ is the index of the specific sibling within the parent container.

answered Dec 5, 2016 at 12:19

Peter Meadley's user avatar

1

Since $(this) refers to .countdown you can use $(this).next() or $(this).next('button') more specifically.

answered Sep 18, 2011 at 17:52

AlienWebguy's user avatar

AlienWebguyAlienWebguy

76.7k17 gold badges121 silver badges144 bronze badges

2

Try –

   $(this).siblings(".bidbutton").addClass("disabled").attr("disabled", "");

answered Sep 18, 2011 at 17:53

ipr101's user avatar

ipr101ipr101

24k8 gold badges58 silver badges61 bronze badges

also if you need to select a sibling with a name rather than the class, you could use the following

var $sibling = $(this).siblings('input[name=bidbutton]');

answered Apr 12, 2019 at 13:53

Shobi's user avatar

ShobiShobi

10.1k6 gold badges43 silver badges79 bronze badges

If I understood that correctly you’re already in a loop (each) so you would always want to select that one sibling button inside each loop runthrough?
Since siblings() returns an array, this would be the way to go:

$(this).siblings('.bidbutton')[0]

You can apply both things you wanted in a single line doing this:

$(this).siblings('.bidbutton')[0].addClass("disabled").attr("disabled", "");

answered Mar 10, 2021 at 15:06

Tarik A.'s user avatar

jQuery перемещения

Определение и применение

jQuery метод .siblings() позволяет получить все элементы находящиеся на одном уровне вложенности (смежные элементы) с указанным элементом, дополнительно они могут фильтроваться с помощью заданного селектора.


Обращаю Ваше внимание, что под одноуровневыми элементами стоит понимать элементы, которые имеют одного и того же родителя.


jQuery синтаксис:

Синтаксис 1.0:
// выбор всех смежных элементов
$( selector ).siblings()

// выбор смежного элемента с определенным селектором
$( selector ).siblings( selector )

selector - Selector

Добавлен в версии jQuery

1.0

Значения параметров

Параметр Описание
selector Строка селектор, использующаяся в качестве дополнительного фильтра. Если дополнительно указывается селектор, то выбор элемента (добавление в коллекцию jQuery) осуществляет только в том случае, если он соответствует этому селектору. Необязательный параметр.

Пример использования

<!DOCTYPE html>
<html>
	<head>
		<title>Использование метода .siblings()</title>
		<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
		<script>
	$( document ).ready(function(){
	  $( 'li.second' ).siblings().css( "color", "red" );  // выбираем все смежные элементы элемента <li> с классом second в документе
	  $( 'li' ).siblings().css( "background", "khaki" );  // выбираем все смежные элементы элемента <li> в документе
	  $( 'li' ).siblings( '.active' ).css( "color", "green" ); // выбираем все смежные элементы элемента <li> в документе, которые имеют определенный селектор
	});
		</script>
	</head>
	<body>
		<ul>
			<li>Первый элемент</li>
			<li class ="second">Второй элемент</li>
			<li>Третий элемент</li>
		</ul>
		<ul>
			<li>Первый элемент</li>
			<li class ="active">Второй элемент</li>
			<li>Третий элемент</li>
		</ul>
		<ul>
			<li>Первый элемент</li>
			<li>Второй элемент</li>
			<li>Третий элемент</li>
		</ul>
	</body>
</html>

В этом примере с использованием jQuery метода .siblings() мы:

  • Выбираем все смежные элементы элемента <li> с классом second в документе и с помощью метода .css() устанавливаем им цвет текста красный. Обратите внимание, что будут выбраны только два элемента, так как только эти смежные элементы имеют того же родителя, что и элемент с классом second.
  • Выбираем все смежные элементы элемента <li> в документе и с помощью метода .css() устанавлием цвет заднего фона цвета khaki.
  • Выбираем все смежные элементы элемента <li> в документе, которые имеют определенный селектор и с помощью метода .css() устанавливаем им цвет текста зеленый.

Результат нашего примера:

Пример использования метода .siblings()

Пример использования метода .siblings()
jQuery перемещения

jQuery позволяет совершать проход по одному уровню дерева DOM и находить соседних элементов заданного элемента.

Соседние или одноуровневые элементы – это элементы, принадлежащие одному и тому же родителю.

Проход по одному уровню дерева DOM

Существует ряд методов jQuery для прохода по соседним элементам дерева DOM:

  • siblings()
  • next()
  • nextAll()
  • nextUntil()
  • prev()
  • prevAll()
  • prevUntil()

jQuery метод siblings()

Метод siblings() возвращает все элементы, находящиеся на одном уровне с выбранным элементом.

В следующем примере возвращаются все соседние элементы от <h2>:


$(document).ready(function(){
  $("h2").siblings();
}); 

Также можно использовать необязательный параметр для фильтрации найденных элементов.

В следующем примере возвращаются все элементы <p>, находящиеся на одном уровне с элементом <h2>:


$(document).ready(function(){
  $("h2").siblings("p");
}); 

jQuery метод next()

Метод next() возвращает следующий соседний элемент от выбранного элемента.

В следующем примере возвращаются следующий соседний элемент от <h2>:


$(document).ready(function(){
  $("h2").next();
}); 

jQuery метод nextAll()

Метод nextAll() возвращает все следующие соседние элементы от выбранного элемента.

В следующем примере возвращаются все следующие соседние элементы от <h2>:


$(document).ready(function(){
  $("h2").nextAll();
}); 

jQuery метод nextUntil()

Метод nextUntil() возвращает все следующие соседние элементы между двумя заданными аргументами.

В следующем примере возвращаются все соседние элементы между элементами <h2> и <h6>:


$(document).ready(function(){
  $("h2").nextUntil("h6");
}); 

jQuery методы prev(), prevAll() и prevUntil()

Методы prev(), prevAll() и prevUntil() работают также как описанные выше методы, только в обратном направлении: они возвращают предшествующие соседние элементы (обход назад по элементам одного уровня дерева DOM, а не вперед).

В этой статье рассмотрим методы jQuery для поиска в DOM-дереве необходимых элементов, связанных с элементами текущего набора определёнными отношениями.

find() – выбор потомков

Нахождение потомков для каждого элемента текущего набора в jQuery выполняется с помощью find().

Указать искомые элементы можно посредством селектора, ссылки на DOM-элементы или набора jQuery. В качестве результата этот метод возвращает новый объект jQuery, состоящий из найденных элементов.

Например, выбрать все элементы с классом «carousel-items», расположенные в «.carousel»:

<div class="carousel">
  <div class="carousel-items">
    <div class="carousel-item">...</div>
    <div class="carousel-item">...</div>
    <div class="carousel-item">...</div>
  <div class="carousel-items">
</div>

<script>
var carousel = $('.carousel');
// выберем потомков с классом carousel-item для элементов набора carousel
var items = carousel.find('.carousel-item');

// пример указания элементов в find посредством ссылки на DOM-элементы
// var elements = document.querySelectorAll('.carousel-item');
// var items = carousel.find(elements);

// с помощью набора jQuery
// var elements = $('.item');
// var items = carousel.find(elements);
</script>

children() – выбор дочерних элементов

Кроме find() в jQuery имеется ещё один похожий метод: children().

children() в отличие от find() выполняет поиск элементов только среди детей каждого элемента текущего набора (т.е. не опускается ниже одного уровня по DOM-дереву).

Для выбора всех дочерних элементов для каждого элемента текущего набора children() необходимо вызвать без аргументов:

<div class="message">
  <h3>...</h3>
  <p>...</p>
</div>
<div class="message">
  <h3>...</h3>
  <p>...</p>
</div>

<script>
  const elements = $('.message').children();
</script>

Если необходимо выбрать не все, а только определённые, то можно использовать селектор.

Например, выберем не все элементы, а только <h3>:

const elements = $('.message').children('h3');

closest() – выбор ближайшего предка

В jQuery поиск ближайшего предка (включая сам этот элемент) выполняется с помощью метода closest().

Если более точно, то closest() выбирает для каждого элемента текущего набора первый элемент, соответствующий указанному (поиск начинается с самого элемента, а потом вверх по предкам).

Для указания искомый элементов можно использовать селектор, ссылку на DOM-элементы и набор jQuery.

Например, выбрать <ul> в качестве ближайшего предка для элементов текущего набора:

<ul>
  <li>One</li>
  <li class="active">Two</li>
  <li>Three</li>
</ul>

<script>
  // текущий набор
  var elements = $('li.active');
  // выберем ближайших предков по селектору ul для элементов, содержащихся в наборе elements
  var ul = elements.closest('ul');
</script>

next() – выбор следующего элемента

В jQuery получить для каждого элемента набора следующий элемент (при необходимости соответствующий указанному селектору) можно с помощью метода next().

При этом следующий элемент по отношению к исходному должен являться сиблингом (или другими словами находиться с ним на одном уровне вложенности). В качестве результата next() возвращает новый объект jQuery, состоящий из найденных элементов.

Например, выберем <li> расположенный после «.active»:

<ul>
  <li>One</li>
  <li class="active">Two</li>
  <li>Three</li>
  <li>Four</li>
  <li>Five</li>
</ul>

<script>
  const element = $('li.active').next('li');
</script>

Если необходимо выбрать не конкретный элемент, а просто следующий, то в этом случае вызывать next() необходимо без аргументов:

const element = $('li.active').next();

Когда необходимо получить не один, а все следующие элементы для каждого элемента набора, следует использовать nextAll().

Например:

const elements = $('li.active').nextAll();

Кроме next() и nextAll() в jQuery имеется ещё nextUntil(). Он позволяет получить все следующие элементы до указанного.

Например, выберем все <li> кроме последнего, расположенные после «.active»:

const elements = $('li.active').nextUntil('li','li:last-child');

prev() – выбор предыдущего элемента

В jQuery кроме методов для выбора следующих элементов имеются аналогичные для получения предыдущих: prev(), prevAll() и prevUntil().

Например:

<div class="boxes">
  <div></div>
  <div></div>
  <div></div>
  <div class="current"></div>
  <div></div>
</div>

<script>
  var prev = $('.current').prev();
</script>

siblings() – выбор сиблингов

Получение сиблингов для каждого элемента набора в jQuery осуществляется с помощью метода siblings().

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

<ul>
  <li>One</li>
  <li class="active">Two</li>
  <li>Three</li>
  <li>Four</li>
  <li>Five</li>
</ul>

<script>
  var elements = $('li.active').siblings();
</script>

parent() – получение родителя

В jQuery получение родительского элемента для каждого элемента текущего набора осуществляется с помощью parent().

При необходимости в parent() мы можем передать селектор и тем самым указать, что нам нужны только элементы соответствующие ему.

Например, получим родительский элемент для <li> с классом active:

<ul>
  <li>One</li>
  <li class="active">Two</li>
  <li>Three</li>
</ul>

<script>
  const elements = $('li.active').parent();
</script>

В jQuery кроме parent() имеется ещё метод parents(). Он в отличие от первого получает для элементов набора не только их непосредственных родителей, а вообще всех предков (до <html>).

Например, получим всех предков для <li> с классом active:

<body>
  <ul>
    <li>One</li>
    <li class="active">Two</li>
    <li>Three</li>
  </ul>
  ...

<script>
  const elements = $('li.active').parents(); // <ul>, <body>, <html>
</script>

При необходимости можно выбрать не всех предков, а только тех, которые соответствует указанному селектору.

Например, получим предков, соответствующего селектору .one для элемента с классом three:

<div class="one">
  <div class="two">
    <div class="three">...</div>
  </div>
</div>

<script>
  var elements = $('.three').parents('.one');
</script>

Ограничить подъём по дереву DOM при получении предков можно посредством parentsUntil():

Например, получим предков являющимися <div> для элемента с классом active (при этом поиск предков должен ограничиваться элементом соответствующим селектору .container:

<div class="container">
  <div class="one">
    <div class="two">
      <div class="active">...</div>
    </div>
  </div>
</div>

<script>
  var elements = $('.three').parentsUntil('div', '.container');
</script>

offsetParent() – получение ближайшего позиционированного предка

В jQuery для получения ближайшего позиционированного предка можно воспользоваться offsetParent(). Этот метод не принимает никаких аргументов.

Этот метод может использоваться в операциях расчета смещений для выполнения анимации и размещения объектов на странице.

Например, найдём offsetParent для элемента с классом active:

<div class="container">
  <div class="one" style="position: relative;">
    <div class="two">
      <div class="active">...</div>
    </div>
  </div>
</div>

<script>
  var elements = $('.active').offsetParent();
</script>

contents() – выбрать все дочерние узлы

В jQuery метод children() используется, когда нужно получить все дочерние узлы (элементы, текстовые узлы и комментарии) для каждого элемента текущего набора.

Этот метод не принимает никаких аргументов.

.contents() и .children() аналогичны, за исключением того, что первый включает в себя текстовые узлы и комментарии.

Метод .contents() можно также использовать для получения содержимого iframe, если iframe находится в том же домене, что и главная страница.

Начиная с jQuery 3.2, .contents() также возвращает содержимое <template> элементов.

Добавить комментарий