如何在 jQuery 悬停事件处理程序中使用 $(this)?
How do I use $(this) in a jQuery hover event handler?
我在 div 中隐藏了一个无序列表。 div 有一个 class '.feed-label',当 div 悬停时我正在显示 ul。
我的问题是,当悬停时,所有其他元素也会显示,我只想显示悬停的那个。
我不知道如何使用 $(this)。
$('.feed-label').hover(function() {
$('.article-interactive-buttons').toggleClass('hide');
});
this
keyword in the context of the event handler refers to the hovered element, i.e. the .feed-label
element. You should create a jQuery object by passing the element to jQuery constructor and then use the find
/children
选择目标后代的方法。
$('.feed-label').hover(function() {
$(this).find('.article-interactive-buttons').toggleClass('hide');
});
您也可以使用 $(selector, context)
语法,它的工作方式与上面的代码片段类似:
$('.feed-label').hover(function() {
$('.article-interactive-buttons', this).toggleClass('hide');
});
你可以试试:
$('.feed-label').hover(function() {
$(this).closest('.article-interactive buttons').toggleClass('hide');
}
如果 ul 在 div 内,并且您想寻求 css 唯一的解决方案,您可以这样做:
.feed-label:hover .article-interactive-buttons {
display: none;
}
.feed-label:hover .article-interactive-buttons {
display: block;
}
我在 div 中隐藏了一个无序列表。 div 有一个 class '.feed-label',当 div 悬停时我正在显示 ul。
我的问题是,当悬停时,所有其他元素也会显示,我只想显示悬停的那个。
我不知道如何使用 $(this)。
$('.feed-label').hover(function() {
$('.article-interactive-buttons').toggleClass('hide');
});
this
keyword in the context of the event handler refers to the hovered element, i.e. the .feed-label
element. You should create a jQuery object by passing the element to jQuery constructor and then use the find
/children
选择目标后代的方法。
$('.feed-label').hover(function() {
$(this).find('.article-interactive-buttons').toggleClass('hide');
});
您也可以使用 $(selector, context)
语法,它的工作方式与上面的代码片段类似:
$('.feed-label').hover(function() {
$('.article-interactive-buttons', this).toggleClass('hide');
});
你可以试试:
$('.feed-label').hover(function() {
$(this).closest('.article-interactive buttons').toggleClass('hide');
}
如果 ul 在 div 内,并且您想寻求 css 唯一的解决方案,您可以这样做:
.feed-label:hover .article-interactive-buttons {
display: none;
}
.feed-label:hover .article-interactive-buttons {
display: block;
}