Методы привязки поиска к другим элементам

Привязать поиск элемента к другим элементам HTML-документа можно с помощью следующих методов.
• find(<Селектор>) — находит элементы, которые располагаются внутри контейнера. Возвращает новую коллекцию. Найдем все теги <div>, затем внутри них все теги <span> и изменим текст внутри этих тегов.
$("div").find("span").html("Новый текст");


<div>
<u<span>Текст l</span>/u>
<span>Текст 2</span>
</div>

• children( [<Селектор>] ) — возвращает все дочерние узлы. Выделим все элементы внутри тегов <div>.

$("div").children().сss("color", "red");

<div>
<u><b>Выделенный</b> текст 1</u>
<b>Текст 2</b>

В результате будет выделен текст, который расположен между тегами <u> и <b>.

Если в качестве необязательного параметра указать селектор, то будут возвращены дочерние узлы, которые соответствуют селектору.

$("div").children("b").сss("color", "red");

<div>
<u><b>Выделенный</b> текст 1</u>
<b>Текст 2</b>
</div>

В этом примере будет выделен только фрагмент Текст 2, так как второй тег <b> расположен внутри тега <u>.

• parent ( [<Селектор>] ) — находит контейнер, в который вложен элемент. Получим любые теги, в которые вложены теги <span>, и выведем новый текст вместо их содержимого.

$("span").parent().html("Это элемент-родитель");

<div><span>Текст</span></div>
<b<span>Текст</span>/b>
<b><u>Текст</u></b>

Результат:

<div>Это элемент-родитель</div>
<b>Это элемент-родитель</b>
<b><u>Текст</u></b>

Если в качестве необязательного параметра указать селектор, то будут возвращены узлы, которые ему соответствуют. Найдем все теги <div>, в которые вложены теги <span>, и выведем новый текст вместо их содержимого.

$("span").parent("div").html("Это элемент-родитель");

<div><span>Текст</span>/div>
<b<span>Текст</span>/b>
<b><u>Текст</u></b>

Результат будет выглядеть следующим образом.

<div>Это элемент-родитель</div>
<b<span>Текст</span>/b>
<b><u>Текст</и</b>

При щелчке на кнопке отобразим скрытый элемент, который находится в одном контейнере с ней, а затем удалим эту кнопку.

$(":button").click(function() {
$(this) // Находим элемент
.parent() // Получаем элемент-родитель

.find("span:first") // Находим первый тег <span>
.show() // Отображаем его
.end() // Возвращаемся к элементу-родителю
.find(":button:first") // Находим внутри него первую кнопку
.remove(); // Удаляем кнопку
});

<div>
<input type="button" value="Показать описание"> Термин l<br>
<span style="display:none">Описание термина l</span>
</div>
<div>
<input type="button" value="Показать описание"> Термин 2<br>
<span style="display:none">Описание термина 2</span>

• closest {<Селектор>) — возвращает ближайший родительский элемент, который соответствует селектору.

$("#spanl").closest("div").html("Это элемент-родитель");

<div>div><b>
<span id="spanl">Текст</span>
</b></div></div>

Результат:

<div>div>Это элемент-родитель</div></div>

• parents ( [<Селектор>] ) — возвращает все контейнеры, в которые вложен
элемент. Если в качестве необязательного параметра указать селектор, то будут
возвращены узлы, которые ему соответствуют. Получим все теги, в которые вло
жен элемент с идентификатором spanl, и выведем их названия.

var elem = $("#div1");
$("#spanl").parents().each(function() {
elem.append(this.tagName + " ");
});

<div><u><b>
<span id="spanl">Текст</span>
</b></u></div>
<div id="div1"></div>

Результат:

b u div

• siblings ( [<Селектор>] ) — находит все узлы, которые расположены до или
после элемента на одном уровне вложенности. Если в качестве необязательного па
раметра указать селектор, то будут возвращены узлы, которые ему соответствуют.

$("div").siblings("a").сss("color", "red");

<a href ="link1 .html">Ссылка l</a><br>

<span>Текст</span>br>
<div>Текст</div>
<span>Текст</span>br>

<a href ="link2 .html">Ссылка 2</a><br>
<spanxa href="link3.html">Ссылка 3</a></span><br>
<a href ="link4 .html" >Ссылка 4</a><br>

Цвет текста ссылки станет красным, если тег <а> следует до или после тега <div>. В этом примере ссылки 1, 2 и 4 станут красного цвета. Ссылка 3 не станет красного цвета, так как расположена внутри тега <span>.

• next ( [<Селектор>] ) — находит узел, который является соседним для элемента и следует сразу после него. Если в качестве необязательного параметра указать селектор, то будут возвращены узлы, которые ему соответствуют. Выделим содержимое тега, который следует сразу за элементом с идентификатором spanl.

$("#spanl").next().сss("color", "red");

<span id="spanl">Текст</span> <b>Текст1</b>
<ихЬ>Текст2</b>/u>

В результате будет выделен фрагмент Текст 1.

• nextAll [<Селектор>] ) — возвращает все узлы, которые следуют после элемента на том же уровне вложенности. Если в качестве необязательного параметра указать селектор, то будут возвращены узлы, которые ему соответствуют. Получим все названия тегов, которые следуют после элемента с идентификатором spanl.

var elem = $("#div1");
$ ("#spanl").nextAll().each (function () { elem.append(this.tagName + " ");
<span id="spanl">Текст</span> 
<b>Текст</b>
<u><b>Текст</b></u>
<div id="div1"x/div>

Результат:

b u div

Обратите внимание: мы не получили второй тег <b>, так как он расположен внутри тега <u>.

• prev( [<Селектор>] ) — находит узел, который является соседним для элемента и находится сразу перед ним. Если в качестве необязательного параметра указать селектор, то будут возвращены узлы, которые ему соответствуют. Выделим содержимое тега, который находится перед элементом с идентификатором spanl.

$("#spanl").prev().сss("color", "red");

<u><b>Текст2</b></u>
<b>Текст1</b>
<span id="spanl">Текст</span>

В результате будет выделен фрагмент Текст 1.

• prevAll ( [<Селектор>] ) — возвращает все узлы, которые находятся перед
элементом на том же уровне вложенности. Если в качестве необязательного па
раметра указать селектор, то будут возвращены узлы, которые ему соответству
ют. Получим все названия тегов, которые находятся перед элементом с иденти
фикатором spanl.

var elem =. $("#div1");
$("#spanl").prevAll().each(function() {
elem.append(this.tagName + " ");
});

<u><b>Текст2</b>/u>
<b>Текст1</b>
<span id="spanl">Текст</span>
<div id="div1"></div>

Результат:

b u

Обратите внимание: мы не получили первый тег <b>, так как он расположен внутри тега <u>.

• contents () — находит дочерние узлы (включая текстовые) в коллекции эле
ментов или в содержимом документа, если он представляет собой фрейм. Пере
местим все текстовые узлы в конец элемента с идентификатором div1.

$("div").contents().not("[nodeType=l]").appendTo("#div1");

<div>Текстовый узел1 <b>узел элемента</b> Текстовый узел2</div>
<div id="div1"></div>

• andSelf () — объединяет предыдущую коллекцию с новой.

$("div").children ("a")
// Объединяем коллекцию тегов <div>
// с коллекцией тегов <а>, являющихся
// дочерними элементами тегов <div>
.andSelf()
.сss({"border-style": "dotted", margin: "20px"});
<div>br>
<a href ="link1 .html">Ссылка l</a><br><br>
<a href ="link2 .html">Ссылка 2</a><br><br>
<spanxa href="link3.html">Ссылка 3</a></span><br><br>
<a href ="link4 .html">Ссылка 4</a><br><br>

В этом примере содержимое тега <div>, а также ссылки 1, 2 и 4 будут обведены пунктирной рамкой. Ссылка 3 не будет обведена, так как расположена внутри тега <span>.

• end () — позволяет вернуться к предыдущей коллекции. В качестве примера получим коллекцию всех тегов <div>, внутри которой найдем элемент с идентификатором spanl и выведем в нем соответствующий текст. Затем вернемся к предыдущей коллекции всех тегов <div>, в которой найдем элемент с идентификатором span2 и также выведем в нем соответствующий текст.

$("div")
//Находим элемент с id="spanl"
.find("#span1").html("Это spanl")
// Возвращаемся на предыдущую коллекцию
.end()
//Находим элемент с id="span2"
.find("#span2").html("Это span2");

• is (<Селектор>) — проверяет коллекцию или элемент на соответствие селектору. В качестве параметра нельзя указывать сложносоставные селекторы (например, условия +, ~, и >). Возвращает true, если элемент соответствует селектору, и false— в противном случае. Выведем подтверждающее сообщение, если элемент с идентификатором link1 расположен внутри тега <div>, а в противном случае — название тега, в который вложен элемент.

var elem = $("#link1").parent();
if (elem.is("div")) {
alert("Элемент вложен в тег <div>");
}
else {
alert("Элемент вложен в тег " + elem[0].tagName);
}
});

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *