2012-09-20 42 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'); 

这将有超过选择所有元素,然后切割下来,只有一个选择的性能增益。

相关问题