2011-09-30 69 views
1

如何添加一個類到一個元素(鏈接)時,懸停最後一課的股利?這裏是我的意思是:在div上懸停一些類,找到最後一個類,並將類添加到具有相同最後一個類的鏈接元素。如何在jQuery中?

我有這樣的代碼:

<a href="http://google.com" class="menu nice menu-2">Google</a> 
<a href="http://yahoo.com" class="menu nice menu-10">Yahoo</a> 
<a href="http://facebook.com" class="menu nice menu-20">Facebook</a> 

。 。 。

<div class="pretty fixed menu-20">Some text here</div> 

重要!我不知道div類的名字。我只知道它將永遠是最後一個!所以當我有像漂亮,固定和菜單20的課程時,我需要menu-20。

現在,我必須找到div的最後一個類,並以某種方式在鏈接元素中找到相同的類並向該鏈接元素添加類,例如「真棒」,所以它看起來像:

<a href="http://google.com" class="menu nice menu-2">Google</a> 
<a href="http://yahoo.com" class="menu nice menu-10">Yahoo</a> 
<a href="http://facebook.com" class="menu nice menu-20 awesome">Facebook</a> 

如何做到這一點?

在此先感謝。

回答

1

類只是另一個屬性,這意味着你可以使用attr()提取它們,並操縱它們作爲字符串:

$('div').hover(function() { // mouseover 
    var arrClasses = $(this).attr("class").split(" "); 
    var strLastClass = arrClasses[arrClasses.length-1]; 
    $('a.'+strLastClass).addClass("awesome"); 
}, function() { // mouseout 
    $('a').removeClass("awesome"); // easier to just remove it everywhere 
}); 
+0

是「arrClasses.length」或「arrClasses.length -1」 – Sarath

+0

我想他的意思是,類必須在最後一個位置 –

0

試試這個

$('div').hover(function(){ 
     var myClass =$(this).attr('class').split(' ')[$(this).attr('class').split(' ').length - 1]; 
     $('a.'+myClass).addClass("awesome"); 
    }) 
0

你可以這樣做;

function getNameOfLastClass(el){ 

    var classNames=$(el).attr('class'); 
    var classes = classNames.split(' '); 
    var lastClass = classes.pop(); 
    return lastClass; 
} 

$('div').hover(function(){ 
    var last = getNameOfLastClass(this); 
    console.log(last); 
    $('a').each(function(){ 
     var lastA = getNameOfLastClass(this); 
     if (lastA === last){ 
      $(this).addClass('awesome'); 
     } 
    }); 

} 
function(){ 
     $('a').removeClass('awesome'); 
}); 

小提琴這裏http://jsfiddle.net/JqMfZ/1/

相關問題