#jquery #image #attr #closest
#jquery #изображение #attr #ближайший
Вопрос:
У меня есть следующий код: (здесь есть скрипка)
<img class="changeable" src="http://placehold.it/100x120amp;text=anniversary">
<ul class="rollover_list">
<li><a href="#" rel="http://placehold.it/100x120amp;text=anniversary"><span class="orange">> </span>Anniversary</a></li>
<li><a href="#" rel="http://placehold.it/100x120amp;text=birthday"><span class="orange">> </span>Birthday</a></li>
<li><a href="#" rel="http://placehold.it/100x120amp;text=christmas"><span class="orange">> </span>Christmas</a></li>
<li><a href="#" rel="http://placehold.it/100x120amp;text=wedding"><span class="orange">> </span>Wedding</a></li>
</ul>
и я пытаюсь изменить атрибут src изображения на основе значения rel привязки.
Я пытаюсь выполнить этот jquery —
$("ul.rollover_list li a").hover(function() {
var $link = $(this).attr('rel');
var $target = $(this).closest('img.changeable');
$($target).attr('src', $link);
});
поскольку мне нужно использовать его несколько раз на странице.
Правильно ли я понимаю, что .closest() найдет ближайший соответствующий элемент, пройдя вверх по DOM?
Не знаю, чего мне не хватает, но это не радует.
Комментарии:
1.
$target
это уже объект jQuery, вам не нужно повторно$($target)
запрашивать его. Кроме того, в чем именно ваша проблема? Что делает тебя несчастным?
Ответ №1:
Эта строка, которая отображается как…
$($target).attr('src', $link);
вероятно, должно быть…
$target.attr('src', $link);
Комментарии:
1. Это не полностью решает проблему, все еще существует проблема с
jquery.closest
методом, который она использует.
Ответ №2:
У вас есть 2 проблемы в вашем jQuery:
closest()
Другими словами, метод jQuery работает только в деревьях: он будет работать только в том случае, если желаемый результат является родительским для текущего элемента.$($target)
.$target
уже является элементом, вы не можете выбрать элемент, используя элемент в качестве селектора, для этого вам понадобится метод, подобныйfind
однако, это не то, что вы пытались сделать.
Комментарии:
1. Это именно то, что я пытаюсь сделать, но у меня будет много таких на странице, поэтому мне нужна версия, которая просто найдет img.changeable, ближайший к ul. Есть ли у вас какие-либо предложения относительно того, как я мог бы это сделать? Приветствуются любые советы!
2. если он всегда упорядочен таким образом, это просто :
$(this).closest('ul').prev()
: jsfiddle.net/U7SNz/3