jQuery:在悬停元素上添加边框但不是父母

时间:2010-05-11 21:05:08

标签: jquery

我有这段代码:

var originalBorder = container.css("border");    
container.hover(function(event) {
            event.stopPropagation();
            $(this).css("border", "1px solid "+options.color);
       },function(){
            $(this).css("border", originalBorder);
       });

我用它来为当前悬停的元素添加边框。但是,例如,如果span位于div内,则他们都会获得边界。我只想定位span。我认为添加event.stopPropagation()可以解决问题(这就是我在Flex中所做的,这是我更习惯的),但我想这是一个 live < / strong>我甚至不明白这意味着什么的事件。那么基本上如何在不触发父母的情况下瞄准最年轻的元素?

谢谢!

更新

更多信息。我试图将此效果添加到每个元素。所以我实际上已将效果添加到divspan但我只希望div在被悬停的最年轻元素时被触发。当一个较年轻的元素像span中的div一样悬停时,只会触发span。上面的代码是一个插件,我这样称呼它:#("*").doBorders()

1 个答案:

答案 0 :(得分:7)

我认为这只是你的选择器选择容器的问题。

如果可以,请确保第一个选择器正在选择孩子 - 您要操纵的孩子......

类似的东西:

    $(".childSpanClass").hover(
        function () {
            $(this).css("border", "1px solid "+options.color);
        },
        function () {
            $(this).css("border", originalBorder);
        }
    );

如果您无法在那里选择孩子,那么您可以选择功能中的孩子,如下所示:

    $(".container").hover(
        function () {
            $(this).children(".childClass").css("border", "1px solid "+options.color);
        },
        function () {
            $(this).children(".childClass").css("border", originalBorder);
        }
    );

<强>更新 鉴于您的更新,您可能希望从清除父母边界的孩子的角度尝试:

$(".container").hover(
    function () {
        $(this).parents().css("border", "");
        $(this).css("border", "1px solid blue");
    },
    function () {
        $(this).css("border", "");
    }
);