Jquery Can';t get.next()开始工作

Jquery Can';t get.next()开始工作,jquery,Jquery,我正在尝试添加一个类,以便悬停时显示跨度文本, 但仅针对特定图像,而不是同时针对所有图像 我可以让它一次将类添加到所有跨度中,但当我尝试将其限制为仅悬停的跨度时,什么也没有发生。问题似乎是当我添加.next('span')-尽管我不知道为什么 有人能告诉我我做错了什么吗 $('.scroller-image').hover(function() { $(this).next('span').addClass('hover'); }, function

我正在尝试添加一个类,以便悬停时显示跨度文本, 但仅针对特定图像,而不是同时针对所有图像

我可以让它一次将类添加到所有跨度中,但当我尝试将其限制为仅悬停的跨度时,什么也没有发生。问题似乎是当我添加.next('span')-尽管我不知道为什么

有人能告诉我我做错了什么吗

    $('.scroller-image').hover(function() {

         $(this).next('span').addClass('hover');
         }, function() {
         $(this).next('span').removeClass('hover');

    });
以下是标记:

<div class="scroller-image">
    <span>image title</span>
    <img src="#" alt="#" />
</div>

图像标题
选择下一个同级元素,而不是子元素。你想要的是这个

$(this).children('span')/选择下一个同级元素,而不是子元素。你想要的是这个


$(this).children('span')/
.next()
查找同级,而不是子级。尝试
$(this).children('span')
.next()
查找兄弟姐妹,而不是子成员。尝试
$(this)。children('span')
您可以使用和提供
this
作为选择器的上下文来缩短代码。像这样:

$('.scroller-image').hover(function(e) {
    $('span', this).toggleClass('hover', e.type === "mouseenter");
});

通过使用和提供
this
作为选择器的上下文,您可以稍微缩短代码。像这样:

$('.scroller-image').hover(function(e) {
    $('span', this).toggleClass('hover', e.type === "mouseenter");
});
您是否正在尝试将“hover”类添加到作为被悬停div的子级的跨度中?我想
.next()
会去兄弟姐妹那里,为什么不试试呢

.children('span')
您是否正在尝试将“hover”类添加到作为被悬停div的子级的跨度中?我想
.next()
会去兄弟姐妹那里,为什么不试试呢

.children('span')

你不需要JavaScript。CSS可以做到这一点:

.scroller-image:hover span {
    /* the styles from your .hover class */
}

现场演示:

你不需要JavaScript。CSS可以做到这一点:

.scroller-image:hover span {
    /* the styles from your .hover class */
}
现场演示:

为了安全起见,我会做
.toggleClass('hover',e.type=='mouseenter')
为了安全起见,我会做
.toggleClass('hover',e.type=='mouseenter')
为了安全起见。