如何仅在子元素上触发 JQuery 事件?

How can I fire JQuery event only on child element?

我的HTML代码是这样的

<div>
    <p>Parent Element</p>

    <div>
        <p>Child Element</p>
    </div>
</div>

我有一个 JQuery 在鼠标悬停时为每个元素添加边框并在鼠标移开时删除边框

var border = '';

// On mouseover
$('*').on('mouseover', Hovers);

function Hovers()
{
    border = $(this).css('border');
    $(this).css('border', '1px dashed black');
}

// On mouseout
$('*').on('mouseout', Outs);

function Outs()
{
    $(this).css('border', border);
}

它按预期添加和删除边框,但每当我将鼠标悬停在子元素上时,它也会为父元素添加边框。我只需要悬停的最后一个元素就有边框。有实现此目标的想法吗?

您需要使用stopPropagation()来阻止子级将事件链式传递给父级

function Hovers(e) {
    border = $(this).css('border');
    $(this).css('border', '1px dashed black');
    e.stopPropagation(); // <--- add this
}