2012-09-20 45 views
2

我不知道如果我去這個正確的路,不過我會盡力解釋什麼,我試圖做最佳我可以。分配CSS類到一個現有的div類而不是所有的人都

我有一個包含菜單的HTML頁面。在該菜單中,有許多實例正在使用特定的CSS類。當頁面更改時,通過URL傳遞一個值,然後使用該URL來突出顯示所選項目並展開子菜單。

我遇到的問題是,當我嘗試使用這個值來擴大在正確的點的地址列表,我不能實際選擇並添加一個新的CSS類或進行其他操作。我在下面發佈了一些代碼,這樣你可以更好地理解我在說什麼,然後舉個例子。

if (param != null) { 
    $('.menuButton')[paramvalue].addClass('on'); 
    $('.menuButton')[paramvalue].slideDown('normal'); 
} 

這就是問題的JavaScript部分。在上面的情況下,paramvalue可以由0代替或1等,這部分在到達特定的類我想改變。我查了一下這個通過添加一個ID,HTML和檢索,使用:

alert($('.menuButton')[paramvalue].id); 

這返回正確的ID值。

的HTML如下:

<div class="menuButton" id="2">Button 1</div> 
<div class="subMenu"> 
    <ul> 
    <li><a href="#">Item 1.1</a></li> 
    <li><a href="#">Item 1.2</a></li> 
    <li><a href="#">Item 1.3</a></li> 
</ul> 
</div> 
<div class="menuButton" id="3">Button 2</div> 
<div class="subMenu"> 
<ul> 
    <li><a href="#">Item 2.1</a></li> 
    <li><a href="#">Item 2.2</a></li> 
    </ul> 
</div> 

沒有CSS去與他們主要只是增加了測試的ID。如有必要,我可以發佈相關的CSS,但我不認爲它是問題的一部分。

我應該提到的是,使用了以下工作

$('.menuButton').addClass('on'); 

所以也許這縮小了問題。

如果您需要任何其他信息。只是問。

感謝您的任何幫助。

回答

7

使用$(selector)[index]你是一個jQuery對象轉換爲不具有addClass方法的DOM元素的對象,你可以使用eq()方法代替:

$('.menuButton').eq(paramvalue).addClass('on'); 
$('.menuButton').eq(paramvalue).slideDown('normal'); 

你也可以連接你的方法:

$('.menuButton').eq(paramvalue).addClass('on').slideDown('normal'); 
+1

可能還值得一提,您可以使用鏈接到兩行轉換爲一個。沒有真正與問題有關,但仍然有幫助。 – ahren

+1

非常感謝。有一些其他問題與slideDown部分,但現在排序。在我忘記它之前,我實際上已經使用了.eq()幾次,並假設我正在做的事實就是這樣。希望我不會再忘記:D。至少我可以回顧一下,如果我這樣做。 – Predz

+0

@Predz嘿嘿,歡迎您:) – undefined

2

試穿:

$('.menuButton').eq(paramvalue).addClass('on'); 
2

你也可以這樣做:

$('.menuButton:eq('+paramvalue+')').addClass('on'); 

這將有超過選擇所有元素,然後切割下來,只有一個選擇的性能增益。

相關問題