3

您好我想问我如何优化该代码:

        $('#infoTrigger0').live('click', function() {
            $('#info0').slideToggle();
        });
        $('#infoTrigger1').live('click', function() {
            $('#info1').slideToggle();
        });
        $('#infoTrigger2').live('click', function() {
            $('#info2').slideToggle();
        });
        $('#infoTrigger3').live('click', function() {
            $('#info3').slideToggle();
        });
        $('#infoTrigger4').live('click', function() {
            $('#info4').slideToggle();
        });
        $('#infoTrigger5').live('click', function() {
            $('#info5').slideToggle();
        });...

用循环或其他我不知道的东西?

4

4 回答 4

1
for (var i = 0; i < n; i++) {
$('#infoTrigger' +i).live('click', function () {
    $('#info' +i).slideToggle();
});

}

于 2012-09-03T12:48:39.240 回答
1

关于什么 ?:

for(var i =0;i<6;i++){
  $('#infoTrigger' + i).live('click', function() {
      $('#info' + i).slideToggle();
  });
}

我建议使用onover,live因为现在不推荐使用最后一个。

于 2012-09-03T12:51:10.907 回答
1
$(document).on('click', 'elem[id^=infoTrigger]', function() {
      var n = this.id.match(/\d+/g)
      $('#info'+n).slideToggle();
});

live方法已弃用,您可以on改用。

于 2012-09-03T12:52:38.793 回答
0

如果你像这样制作 html

<div class="info" id="info1">
  <div id="info1_sub"></div>
</div>

你可以应用这个

 $('.info').live('click', function() {
            var elem="#"+$(this).attr("id")+"_sub";
            $(elem).slideToggle();
        })
于 2012-09-03T12:49:34.567 回答