我有这样的代码,以突出的任何元素,如果在徘徊:
$('*').hover(function() {
$(this).addClass('over');
}, function() {
$(this).removeClass('over');
});
问题是,在我的选区中的所有元素也将突出显示。 看看这个例子: 的jsfiddle尝试悬停的span
,你会看到p
和body/html
被强调为好。
我有什么以改变heighlight只有部Im徘徊?
PS我必须使用*
,因为我不知道是什么属性。
尝试这个:
$('*').hover(function(e) {
$('*').removeClass('over');
$(this).addClass('over');
e.stopPropagation();
}, function() {
$(this).parent().addClass('over');
$(this).removeClass('over');
});
stopPropagation()
防止悬停事件冒泡的DOM,所以如果你的元素是左对齐的身体,它会选择正确的元素(尝试从顶部进入留给明白我的意思)。
见DEMO 。
它应用到新元素徘徊删除之前所有元素“过度”类:
$('*').hover(function() {
$('*').removeClass('over');
$(this).addClass('over');
return false;
}, function() {
$(this).removeClass('over');
$(this).parent().addClass('over');
});
http://jsfiddle.net/mtHyF/12/
记住,如果你是一个对象的内部,你平时在里面它的父,和父亲的父亲,等等。这就是为什么你得到多个“过度”的对象。
如果你只是想最里面的东西突出,你可以尝试:
if($(this).children().length==0) {
$(this).addClass('over');
}
这将拒绝突出显示它里面的其他对象的东西。
如果你想在最里面的对象目前徘徊(既不其父母和子女),可能:
$('*').hover(function() {
$('*').removeClass('over');
$(this).addClass('over');
}, function() {
$(this).removeClass('over');
$(this).parent().addClass('over');
});
我觉得你还是想在任何时候都突出一个元素,但如果你在一个内部元件是你不希望它的父元素加以强调。 下面将实现这一目标:
$('*').hover(function() {
if ($(this).parent() != null)
{
$(this).parents().removeClass('over');
}
$(this).addClass('over');
}, function() {
$(this).removeClass('over');
$(this).parent().addClass('over');
});