悬停指示用jQuery悬停事件选择(Hover Indicate selection with Jq

2019-10-17 19:57发布

我有这样的代码,以突出的任何元素,如果在徘徊:

$('*').hover(function() {
  $(this).addClass('over'); 
}, function() {
  $(this).removeClass('over');
});

问题是,在我的选区中的所有元素也将突出显示。 看看这个例子: 的jsfiddle尝试悬停的span ,你会看到pbody/html被强调为好。

我有什么以改变heighlight只有部Im徘徊?

PS我必须使用* ,因为我不知道是什么属性。

Answer 1:

尝试这个:

$('*').hover(function(e) {
  $('*').removeClass('over');
  $(this).addClass('over');
  e.stopPropagation();

}, function() {
  $(this).parent().addClass('over');
  $(this).removeClass('over');
});

stopPropagation()防止悬停事件冒泡的DOM,所以如果你的元素是左对齐的身体,它会选择正确的元素(尝试从顶部进入留给明白我的意思)。

见DEMO 。



Answer 2:

它应用到新元素徘徊删除之前所有元素“过度”类:

$('*').hover(function() {
    $('*').removeClass('over');
    $(this).addClass('over'); 
    return false;
}, function() {
  $(this).removeClass('over');
  $(this).parent().addClass('over');
});

http://jsfiddle.net/mtHyF/12/



Answer 3:

记住,如果你是一个对象的内部,你平时在里面它的父,和父亲的父亲,等等。这就是为什么你得到多个“过度”的对象。

如果你只是想最里面的东西突出,你可以尝试:

if($(this).children().length==0) {
  $(this).addClass('over'); 
}

这将拒绝突出显示它里面的其他对象的东西。

如果你想在最里面的对象目前徘徊(既不其父母和子女),可能:

$('*').hover(function() {
  $('*').removeClass('over'); 
  $(this).addClass('over'); 
}, function() {
  $(this).removeClass('over');
  $(this).parent().addClass('over');
});


Answer 4:

我觉得你还是想在任何时候都突出一个元素,但如果你在一个内部元件是你不希望它的父元素加以强调。 下面将实现这一目标:

$('*').hover(function() {
    if ($(this).parent() != null)
    {
        $(this).parents().removeClass('over');
    }
    $(this).addClass('over'); 
}, function() {
    $(this).removeClass('over');
    $(this).parent().addClass('over');
});


文章来源: Hover Indicate selection with Jquery hover event
标签: jquery hover