2011-04-17 92 views
1

我所拥有的是使用9i li项目的PHP生成的UL。每个人都有一个从1级到9级。jQuery简单循环

我也有9个div生成的PHP也有从1到9类。我试图使用jQuery,以便当有人点击一个李项目,其相应的div得到显示/ hidden ...

ie。点击李3类,表演类的div 3.

我有这样的:

for (var i = 1; i <= 9; i++){ 
    $("li." + i).click(function(){ 
     $("div." + i).toggle(); 
    }); 
} 

但是它不是相当的工作。任何人都可以看到为什么它可能不是?

<ul class="featureItems"> 

    <li class='1'>Seo</li> 
    <li class='2'>Social Media</li> 

    <li class='3'>Internet Marketing</li>  


    <li class='4'>Lead Generation</li> 
    <li class='5'>Appointment Setting</li> 
    <li class='6'>Telesales</li>   


    <li class='7'>Copyright</li> 
    <li class='8'>Promotions</li> 
    <li class='9'>Website Design</li>  

    </ul> 


<div id="featuredItem"> 
    <div class='1 featureText'>i'm seo text</div><div class='2 featureText'>i'm social media text</div><div class='3 featureText'>i'm internet marketing text</div><div class='4 featureText'>i'm lead generation text</div><div class='5 featureText'>i'm appointment setting text</div><div class='6 featureText'>i'm telesales text</div><div class='7 featureText'>i'm copyright text</div><div class='8 featureText'>i'm promotions text</div><div class='9 featureText'>i'm website design text</div> </div> 
</div> 

输出HTML!

+0

你已经写在代码里的$(document) 。准备()? – 2011-04-17 19:59:06

+0

请包含您的HTML代码(示例),以使您的问题更清晰。 – 2011-04-17 20:02:03

回答

2

编辑2:这是解决它的答案:如果你的li■找多个类

$('li').click(function(evt) 
{ 
    $('div.' + $(this).attr('class')).toggle(); 
}); 

这是行不通的。如果这是一个问题,我会考虑使用其他信息来传递该信息,如HTML5 data属性或rel属性。

+0

我不太确定这是如何工作的?我只想要与同一班级的div切换,而不是li项目本身? – benhowdle89 2011-04-17 19:58:40

+0

我做了一个应该回答的编辑 - 我不确定为什么你需要''li'和'div'的类名,如果它们总是相同的话。 – 2011-04-17 20:00:31

+0

该divs arent儿童的李项目:)他们在一个单独的UL – benhowdle89 2011-04-17 20:02:29

1

不知道这是否是您的问题,但用数字启动标识符(在这种情况下类名称,但ID也可能有此问题)几乎总是一个坏主意。我建议你使用名称c1,c2,c3,c4等。它可能是在你的代码中的某个地方,数字名称被转换为数字而不是字符串。

你可能会考虑更好的名字,但我认为只要用字母'c'开头的名字会有所帮助。

+0

youa are absuletly right,we use use so generic id like 1,2,3 ... – kobe 2011-04-17 20:04:23

1

的问题是,当你调用内部函数的点击我的值是10 你需要一个封闭:

for (var i = 1; i <= 9; i++){ 
    (function (i){ 
     $("li." + i).click(function(){ 
      $("div." + i).toggle(); 
     }); 
    })(i) 
} 

http://jsfiddle.net/bicccio/prTH9/

+0

就是这样。正在阐述它的过程中,但是你用一句话来形容它。 – 2011-04-17 20:24:58