Довольно простой обход, который я не могу понять.
В основном, если кто-то нажимает на <li>
и я хочу изменить изображение в первом div, как бы я это сделал? попробовал несколько вещей, в том числе:
$(this).closest('.currentImage img')
<div class="imageSlider">
<div class="currentImage">
<img src="LP5/lp5_1.png"/>
</div>
<ul class="thumbnails">
<li><img src="LP5/lp5_1.png"/></li>
<li><img src="LP5/lp5_2.png"/></li>
<li><img src="LP5/lp5_3.png"/></li>
<li><img src="LP5/lp5_4.png"/></li>
<li><img src="LP5/lp5_5.png"/></li>
</ul>
</div>
Jquery
$('.thumbnails li').click(function(e){
e.preventDefault();
var newImage = $(this).children('img').attr('src');
var $image = $(this).closest('.currentImage img');
$image.fadeOut(500, function() {
$image.attr('src', newImage);
}).fadeIn(500);
});
Попробуйте найти родительский элемент .imageSlider
, а затем .currentImage
его дочерний элемент .currentImage
.
$('.thumbnails li').click(function(e){
e.preventDefault();
var newImage = $(this).children('img').attr('src');
var $image = $(this).parents('.imageSlider').find('.currentImage img');
console.log(newImage);
$image.fadeOut(500, function() {
$image.attr('src', newImage);
}).fadeIn(500);
});
Другим вариантом будет $(this).parent('ul').siblings('.currentImage').find('img')
.
$(this).parent('.imageSlider.currentImage img')
это не сработало?
.imageSlider
и .currentImage
. Отсутствие пробела означает, что они являются одним и тем же элементом, то есть элементом с обоими классами. Во-вторых, $(this).parent(selector)
находит непосредственного родителя элемента $(this)
, но возвращает его, только если он соответствует селектору. Непосредственным родителем $(this)
является элемент <ul>
. В-третьих, $(this).parents(selector)
начинается с непосредственного родителя, затем получает его родителя и повторяет его до тех пор, пока не найдет элемент, соответствующий селектору, что никогда не произойдет, потому что .currentImage
не является родителем элемент <li>
.
Этот селектор не совсем прав. .currentImage
является .currentImage
элементом текущего родителя элемента (т.е. .thumbnails
), поэтому closest()
никогда не найдет его.