0

我有一个不循环的 for 循环语句,这是我的代码:

$(document).ready(function(){
    for(var i=1;i<=30;i++){
        $('img[alt="sample'+i+'"]').click(function(){
            var changeImage = $('img[alt="sample'+i+'"]').attr('src');
            var changeText = $('img[alt="sample'+i+'"]').attr('alt');
            $('img[alt="main image"]').attr('src', changeImage);
            $('h4#imageTitleHead').text(changeText);
        });
    }
});

i不会循环,当我检查源代码时,代码仍然是一样的..像这样它$('img[alt="sample'+i+'"]')没有变成数字,根本没有循环..请帮助..提前谢谢你

4

4 回答 4

1

如果可以这样做,为什么要循环:

首先将任何类添加到图像中altsample[NUMBER]例如loopImages):

<img src="image.png" alt="sample1" class="loopImages">

现在,代码:

$(document).ready(function(){
    $('img.loopImages').click(function(){
        var current = $(this);
        var changeImage = current.attr('src');
        var changeText = current.attr('alt');

        $('img[alt="main image"]').attr('src', changeImage);
        $('h4#imageTitleHead').text(changeText);
    });
});
于 2012-09-23T06:09:33.067 回答
1

i在from 循环和回调函数之间是一个麻烦。只i提供了一个变量,在循环的最后一次迭代之后将是 31。但是 jQuery 提供了一种方便的方式来访问被点击的对象作为上下文对象(aka this)。

$(document).ready(function() {
  for (var i = 1; i <= 30; i++){
    $('img[alt="sample'+i+'"]').click(function() {
      var clickedObject = $(this); // wrap it in a jquery
      var changeImage = clickedObject.attr('src');
      var changeText = clickedObject.attr('alt');
      $('img[alt="main image"]').attr('src', changeImage);
      $('h4#imageTitleHead').text(changeText);
    });
  }
});

这应该够了吧 ;)

于 2012-09-23T06:09:38.113 回答
0

这可能可以通过一个相当简单的选择器来解决。

这是它的样子:

$('img[alt*="sample"]')...

您也可以在 for 循环之外编写一次函数,而不是在每次循环运行时重新声明它。前任。:

function bindAllImages(image){
    // same code in here
}

$('img[alt*="sample"]').bind('click', bindAllImages(image);


这里还有一个说明效果的 JSFiddle:http: //jsfiddle.net/JYCLA/1/

于 2012-09-23T08:18:22.640 回答
0

循环本身很好...... http://jsfiddle.net/

让我们看看还有什么问题...

等等,没关系,编辑

于 2012-09-23T05:54:35.300 回答