Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Поиск родителя по селектору (https://javascript.ru/forum/jquery/9692-poisk-roditelya-po-selektoru.html)

Юрий Шу 01.06.2010 11:06

Поиск родителя по селектору
 
Здравствуйте.
Хочу сделать элементарный скрипт, который при наведении на ссылку добавляет родителю td определенный класс. Подскажите, как это делается?

Пока что выбираю как td:parent, но как фиксировать над какой именно ссылкой навели курсор и как определять ее родителя td непонятно.
<table>
    <tr>
      <td><a href="#">Вячеслав Быков: "Мы были заложниками нашего контракта"</a></td>
    </tr>
    <tr>
      <td><a href="#">Еще один арбитр наказан за свистки в пользу "Локомотива"</a></td>
    </tr>
  </table>

$(document).ready(function(){
	$("table tr td a").mouseover(function(){
		$("td:parent").addClass("gray");
	});

e1f 01.06.2010 12:12

Цитата:

Сообщение от Юрий Шу (Сообщение 57354)
$(document).ready(function(){
	$("table tr td a").mouseover(function(){
		$("td:parent").addClass("gray");
	});

$(document).ready(function(){
    $("table tr td a").mouseover(function(){
        $(this).closest("td").addClass("gray");
    });
);

Юрий Шу 01.06.2010 13:09

Нашел другое решение. Вот так не лучше?
$("table tr td a").mouseover(function(){
		$(this).parent("td").addClass("gray")
});

e1f 01.06.2010 13:35

Юрий Шу, я уже отписал. closest именно для поиска ближайшего parenta, удовлетворяющего условию (в кои-то веки в jquery реализовали действительно полезный метод). parent -- вернет непосредственного родителя, а это совсем не то.

Юрий Шу 01.06.2010 13:47

Цитата:

Сообщение от e1f (Сообщение 57382)
parent -- вернет непосредственного родителя, а это совсем не то.

имеется ввиду ближайшего родителя?

e1f 01.06.2010 14:09

Юрий Шу, да -- parentNode. $().parents("query") вернет ВСЕХ родителей, отфильтрованных по query. Причем если у Вас это td, то вполне возможно, их будет несколько -- вложенные таблицы такие вложенные таблицы. В данном случае нам нужен "ближайший родитель либо сам же елемент, удовлетворяющий выборке".

micscr 01.06.2010 15:04

тут у него <td> - как раз непосредственный родитель так что $(this).parent("td") вполне катит, даже так: $(this).parent()

e1f 01.06.2010 16:06

micscr, плохой подход. Profit jQuery - в возможность реализовать шаблоно-независимый компонент. А если ссылка потом будет во что-то обернута? $(this).parent() -- вообще никуда не годится. тогда уж $(this.parentNode).addClass, к чему уж мелочиться :)

Sweet 01.06.2010 16:08

К слову, по-моему в данном случае лучше использовать css, а не js

e1f 01.06.2010 16:13

Sweet, согласен, если есть возможность, так и нужно делать. А здесь каким образом можно использовать css?


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