简化代码

时间:2012-12-18 22:12:01

标签: javascript jquery

我有一个关于简化我的jquery代码的问题。我有一个图像列表,每个图像都有一个唯一的ID,点击事件显示较大的图像及其信息。有没有办法用类似于php的foreach循环的循环来做到这一点?

$(function() {
  $('img#cl_1').click(function() {
    $('div#left').html('display image').slideDown('fast');
    $('div#right').html('display image info').slideDown('fast');
  });
  $('img#cl_2').click(function() {
    $('div#left').html('display image').slideDown('fast');
    $('div#right').html('display image info').slideDown('fast');
  });
  $('img#cl_3').click(function() {
    $('div#left').html('display image').slideDown('fast');
    $('div#right').html('display image info').slideDown('fast');
  });
  $('img#cl_4').click(function() {
    $('div#left').html('display image').slideDown('fast');
    $('div#right').html('display image info').slideDown('fast');
  });
  /*so on and so forth*/
});

2 个答案:

答案 0 :(得分:3)

如果您不想使用类选择器,您也可以使用以下内容:

$(function() {
  $('img[id^="cl_"]').click(function() {
    $('div#left').html('display image').slideDown('fast');
    $('div#right').html('display image info').slideDown('fast');
  });
});

这适用于任何元素id以'cl_'开头的图像。 类选择器肯定更干净。

答案 1 :(得分:2)

如果“显示图像”和“显示图像信息”是每个图像的不同值,请考虑将它们加载到数组中或通过AJAX获取它们。然后将事件绑定更改为如下所示:

$('img.showStuff').click(showDetails);  

function showDetails() {
   var id = this.id;
   $('div#left').html(images[id]).slideDown('fast');
   $('div#right').html(info[id]).slideDown('fast');
}