2013-03-02 79 views
1

之间,我想多元素之间toggleClass:jQuery的toggleClass()多类

<div class='container'> 
    <div class='main'> 
     <div class='par' id='1'></div> 
     <div class='par' id='2'></div> 
     <div class='par' id='3'></div> 
     <div class='par' id='4'></div> 
    </div> 
</div> 

我有这个

$('.main').delegate('.par','click',function(){ 
    $(this).toggleClass('media-clicked'); 
}); 

我明白,如果我点击元素说,#1,然后它会添加单击媒体的类,如果再次单击它,则会将其删除。不过,我想点击#1,然后再次点击它,点击另一个元素,如#4,它会删除其他媒体点击(#1)。

我该怎么做这样的事情?

谢谢!

回答

2

所以基本上你想要的类移动到一个新的元素。我会建议使用“包装”元素的可重用性。在这种情况下,具有主类的div就足够了,这样您可以查找当前元素的所有具有要删除类的元素,将其删除并将其添加到当前元素,如下所示:

// you can use .on instead of .delegate if your jquery version is > 1.7 
$('.main').delegate('.par','click',function(){ 
    $(this).sibblings(".media-clicked").removeClass("media-clicked"); 
    $(this).addClass('media-clicked'); 
}); 

这允许您使用具有相同结构的其他块,并且仍然在每个块上分别保留功能。

+0

谢谢!我想你可以在最后一行切换类别,所以如果用户再次点击它,它会删除?那就是我正在使用的 – hellomello 2013-03-02 01:39:30

2
$('.main').on('click', '.par', function() { 
    $(this).siblings('.media-clicked').removeClass(); 
    $(this).toggleClass('media-clicked'); 
}); 

http://jsfiddle.net/WPDGY/2/

+0

感谢您显示.on()方法。 +1 – hellomello 2013-03-02 01:39:58