2013-04-01 127 views
3

删除类我在jQuery的一个小白,并已受挫的地狱试图让下面的工作。我相信这是一件简单的事情,一位有经验的开发人员会马上拿起。从DIV悬停

我在页面上的其他的div在1名列表的菜单和列表。当用户悬停在菜单上时,列表中的项目将被突出显示。我有这么多。但是因为列表很长,我需要一个点击事件来在用户向下滚动页面时突出显示这些项目。

没关系。但是我不知道如何在用户通过菜单中的下一个项目时从高亮显示的项目中删除点击类。

$('#buttons li').hover(function() { 
    $('.item-' + this.className).addClass('clients-hover'); 
}, 
function() { 
    $('.item-' + this.className).removeClass('clients-hover'); 
}); 
$(function() { 
    $('#buttons li').click(function() { 
    $(this).addClass('clients-hover'); 
    }); 
}); 

例如,在下面的拨弄,当在艺术家/乐队中的div项点亮,但是当用户悬停在喜剧演员,在该类中的项目被高亮显示,并且用户将鼠标悬停或点击艺术家/乐队恢复正常。

http://jsfiddle.net/toddyhotpants/RCMaP/4/

这是它在页面上(不点击事件): http://whitesky.com.au/clients/

在此先感谢。

+0

检查这个http://jsfiddle.net/RCMaP/7/ – Gopesh

回答

0

,而不是$ .addClass():)

Fiddle!

+0

您的代码将不会删除点击的元素 – Eli

3

只是删除类使用$.toggleClass()点击的元素的其他兄弟姐妹的clients-hover

$(this).addClass('clients-hover').siblings().removeClass('clients-hover'); 

演示:http://jsfiddle.net/RCMaP/6/


基于您的评论,只需要修改代码时悬停在菜单导航:

$('#buttons li').hover(function() { 
    $('.item-' + this.className).addClass('clients-hover') 
    .parent().siblings().children().removeClass('clients-hover'); 
}, 

function() { 
    $('.item-' + this.className).addClass('clients-hover'); 
}); 

演示:http://jsfiddle.net/RCMaP/12/

+0

喜的兄弟姐妹类'客户-hover',由于几乎是它。但也许我不太清楚,当用户将鼠标悬停在菜单导航栏上时,我需要'项目'div中的列表项目失去悬停/点击状态。 –

+0

检查我的编辑:) – Eli

+0

感谢,这是伟大的。虽然我无法在wordpress网站上正常运行,但有什么想法? [http://whitesky.com.au/clients/](http://whitesky.com。au/clients /) –

0

使用siblings()去除click事件类他人..更新您的一些代码..你并不需要两个功能的document.ready ....

试试这个

$('#buttons li').hover(function() { 
    $("div[class^='item']").removeClass('clients-hover'); //<--here removesclass from all div 
    $('.item-' + this.className).addClass('clients-hover'); 
}, 

$(function() { 
    $('.item-' + this.className).removeClass('clients-hover'); // moved for other document.ready function 
    $('#buttons li').click(function() { 
    $(this).siblings().removeClass('clients-hover'); //<--- here remove class from other li 
    $(this).addClass('clients-hover'); 
    }); 
}); 

fiddle here

+0

如果您点击列表元素,然后将鼠标悬停在其他元素上,那么您的代码会被破坏,然后它将不再突出显示右侧的项目 – Eli

0

像这样的事情?

$('#buttons li').hover(function() { 
    $('.item-' + this.className).addClass('clients-hover'); 
    }, 
    function() { 
    $('.item-' + this.className).removeClass('clients-hover'); 
}); 

$(function() { 
    $('#buttons li').click(function() { 
     $("[class^=item]").not($('.item-' + this.className)).removeClass('clients-hover'); 
     $(this).addClass('clients-hover'); 
     $(this).siblings().removeClass('clients-hover'); 
     $('.item-' + this.className).addClass('clients-hover'); 
    }); 
}); 
+0

感谢Bhuwan - 这在小提琴中很棒,但我无法得到它在我的wordpress网站上工作。这让我疯狂。点击后右侧的项目保持其样式,但菜单导航中的项目不包含。我无法弄清楚我出错的地方。这里是在网站上:[http://vnpropaganda.com/whitesky/clients/](http://vnpropaganda.com/whitesky/clients/) –