抓住最接近的元素

时间:2014-07-04 05:03:44

标签: javascript jquery

我在一个画廊工作,我需要在叠加div悬停时为图像添加一个类。

这是我的HTML

 <div class="overlayForCarDetails"></div>
 <a href="img/car_details/1large.jpg" rel="shadowbox">
   <img class="mediumImg" src="img/car_details/1medium.jpg" alt="">
 </a>

这是我的javascript

        $('.overlayForCarDetails').mouseenter(function () {
            $(this).css('opacity', '0.7');
            $(this).closest('.mediumImg').addClass('zoomed');

        });

但不知怎的,它不起作用。 你能告诉我我做错了吗? 感谢。

3 个答案:

答案 0 :(得分:3)

尝试从中选择.next()兄弟和.find()相关元素。

$(this).next('a').find('.mediumImg').addClass('zoomed');

完整代码将是,

 $('.overlayForCarDetails').mouseenter(function () {
   $(this).css('opacity', '0.7');
   $(this).next('a').find('.mediumImg').addClass('zoomed');
 });

答案 1 :(得分:3)

您必须使用.next().find()代替.closest()(最近的查找层次结构),如下所示:

$('.overlayForCarDetails').mouseenter(function () {
            $(this).css('opacity', '0.7');
            $(this).next().find('.mediumImg').addClass('zoomed');

        });

答案 2 :(得分:2)

您需要nextAll()siblings()才能在DOM的层次结构树中获得相同级别的a个元素。然后,您需要使用find()来获取.mediumImg后代中的a closest()查看DOM层次结构中元素的祖先。

$('.overlayForCarDetails').mouseenter(function () {
     $(this).css('opacity', '0.7');
     $(this).next('a').find('.mediumImg').addClass('zoomed');
});

next()

描述:获取匹配元素集中每个元素的所有后续兄弟,可选择使用选择器进行过滤。