2014-03-01 47 views
1

如何在每對元素(a/div)上添加遞增ID,並在使用toogle之前單擊鏈接之前隱藏/顯示div在jQuery中添加增量屬性?

下面是當前HTML和JS:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
<head> 
<script src="js/jquery-1.4.min.js"></script> 
</head> 
<body> 
<div class="ayuda"> 
    <a>My help n1</a> 
    <div> 
     Content help n1 
    </div> 
    <br /> 
    <a>My help n2</a> 
    <div>Content help n2</div> 
</div> 
<script> 
var ayuda = $(".ayuda a").length;   // contar el número de columnas 
for (var i=0;i<ayuda;++i)     // help trae la cantidad de p 
{ 
    (function(j) {       // creando IDs dinámicos segúna la cantidad de columnas 
     $('.ayuda a').attr('id', 'mi_ayuda_'+j); 
     $('.ayuda a').attr('href', '#'); 
     $('.ayuda div').attr('id', 'mi_ayuda_contenido_'+j); 
     $("#mi_ayuda_contenido_"+j).hide(); 
      $("#mi_ayuda_"+j).click(function() { 
       window.alert(j); 
       $("#mi_ayuda_contenido_"+(j)).toggle();  
      }); 
    })(i); 
} 
</script> 
</body> 
</html> 

這裏有一個JSFiddle Sample

+0

你的問題還不清楚。 –

回答

3

使用.each()到L填充元素,添加ID並附加事件。

$(function() { 
    $(".ayuda a").each(function(i,el) { 
     $(el).attr('id','mi_ayuda_'+i) 
      .attr('href', '#') 
      .next() 
       .attr('id', 'mi_ayuda_contenido_'+i) 
       .hide(); 
     $(el).click(function() { 
      window.alert(i); 
      $("#mi_ayuda_contenido_"+ i).toggle();  
     }); 
    }); 
}); 

JSFiddle Sample

1

因爲裏面的for循環,而不是目前的指數在靶向僅元素,你靶向給定的選擇匹配的所有元素

可以多容易使用

$(".ayuda a").click(function(){ 
    $(this).next().toggle() 
}).attr('href', '#').next().hide(); 

演示解決這個問題: Fiddle

你的代碼看起來應該像this

3

無需添加標識;你不能將事件監聽器附加到鏈接對象。在附加事件偵聽器以支持動態添加的元素時,最好始終使用.on()

$("div.ayuda").on("click", "a", function(e) { 
    $(this).next("div").toggle(); 
}); 

而對於最初躲在ayuda DIV中的div,最好添加CSS,避免隱藏在頁面加載這些div凌亂動畫。

div.ayuda > div { 
    display: none; 
} 

JSFiddle Demo