我有这段代码:
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>我甚至不明白这意味着什么的事件。那么基本上如何在不触发父母的情况下瞄准最年轻的元素?
谢谢!
更多信息。我试图将此效果添加到每个元素。所以我实际上已将效果添加到div
和span
但我只希望div
在被悬停的最年轻元素时被触发。当一个较年轻的元素像span
中的div
一样悬停时,只会触发span
。上面的代码是一个插件,我这样称呼它:#("*").doBorders()
答案 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", "");
}
);