0

如果它符合某些条件,我想将覆盖应用到悬停的元素,或者如果不匹配,则应用到符合条件的第一个父元素。

给定以下示例 HTML,并假设我想将覆盖应用于任何具有“匹配”类的元素:

<div class='matches'>
   some Text <span>some more text</span>
</div>

我希望如果用户将鼠标悬停在“一些文本”上,则覆盖将应用于 div,如果他们将鼠标悬停在“更多文本”上,则覆盖也会应用于 div,因为这是第一个具有类的父级'火柴'。

我能想到的唯一方法是观察每个元素上的悬停事件,这似乎非常低效。这样做可以吗,还是有更好的方法来做到这一点?

4

1 回答 1

1

这应该工作

$('.matches').on('mouseenter', function(e) {
    // $(this) is .matches element
})

编辑 - 原件过于复杂。$(this)应该是你想要的元素。

在此处发布提问者的解决方案以便于查找:

http://jsfiddle.net/swwh8/1/

$('.matches').hover(function(e) {
    $('.matches').removeClass('highlight');
    $(this).addClass('highlight');
    e.stopPropagation();
}, function (e) {
    $(this).removeClass('highlight');
    $(this).parent().closest('.matches').addClass('highlight');
});
于 2013-07-18T22:00:26.280 回答