2012-09-24 97 views
0

我是Jquery编码的学习者,我的任务是显示/隐藏点击元素SPAN元素。我试图与不工作下面提到的jQuery代码..在jQuery中显示隐藏元素表元素

HTML代码:

foreach($array as $key => $arrValue) { 
    <span id="link<?=$count?>">$key</span> 
    <table id="tbl<?=$count?>"> 

     foreach($arrValueas $key => $value) { 
      <tr><td>$value</td></tr> 
     } 
    </table> 
} 

我jQuery代码是:

$(function(){ 
    // To open/close field's group div 
    $("span").each(function (i){ 
     i++; 
     $('#link' + i).click(function (i) { 
      $('#tbl' + i).toggle(800); 
     }); 
    }); 
}); 

请避免PHP打开关闭在HTML代码中标记问题..

+0

而你的问题是...?请为我们提供生成的html。 – Johan

回答

2

试试这个

$(function(){ 
    $("span").each(function (i){ 

     (function(i) { 

      $('#link' + i).click(function() { 
       $('#tbl' + i).toggle(800); 
      }); 

     }(i)); 

    }); 
}); 

你不需要增加与i++变量oyherwise你不会将有望link元素上的处理程序。 Each()已经增加变量i

+0

感谢您的回复......我绝对明白您的观点。 –

+0

出于好奇,为什么click委托包装在一个函数中? –

3
$("span").each(function(){ 
    $(this).click(function() { 
     $(this).next('table').toggle(800); 
    }); 
}); 
+0

是的,这是更好(和更短):+1 – fcalderan

+0

谢谢..马泰米海,但我不知道为什么这不是为我工作..因为我也同意法布里奇奥卡尔德兰.. –

+0

这是为我工作..请结帐这个http://jsfiddle.net/n6w3w/ –

1

尝试这种方式来匹配两种不同的元素组:

Here is jsFiddle.

var thumbs = $('ul.thumbHolder li'); 
var bigImg = $('ul.imgHolder li'); 

thumbs.click(function() { 
    var target = $(this).index(); 
    bigImg.each(function(i){ 
     if(i != target){ 
      $(this).fadeOut(300); 
     }else{ 
      $(this).fadeIn(300); 
     } 
    });  
});​