我正在尝试根据链接的href更改数据,但它只执行一次

时间:2010-10-06 18:21:45

标签: jquery

$("a").each(function() { openFile($(this).attr('href')); }

我从另一个问题得到了这个。 openFile是一个根据链接的文件扩展名切换img src的函数。

现在,如果我有这个:

<a class="thelink" href="../General Reading/General Reading 1/Luddites/Luddites 4 Summary.pdf"><img class="theimage" src="" alt="icon"/> <div class="thefile"></div></a>
<a class="thelink" href="../General Reading/General Reading 1/Luddites/Luddites 5 Reading.pdf"><img class="theimage" src="" alt="icon"/> <div class="thefile"></div></a>
<a class="thelink" href="../General Reading/General Reading 1/Luddites/Luddites 1 Vocab.ppt"><img class="theimage" src="" alt="icon"/> <div class="thefile"></div></a>    
<a class="thelink" href="../General Reading/General Reading 1/Luddites/Luddites 2 Grammar Preview.ppt"><img class="theimage" src="" alt="icon"/> <div class="thefile"></div></a>

我的功能只在结束时运行一次我猜并从最后一个网址获取信息。我想要的是循环每个链接并根据特定链接更改信息。

很难解释。

3 个答案:

答案 0 :(得分:2)

这样openFile函数不知道要定位哪个图像。也许这会起作用吗?

$("a").each(function() {
  var src = openFile($(this).attr('href'));
  $(this).find('img').attr('src',src);
});

function openFile(href) {
  // do stuff
  // and make sure the src is returned
  return 'something';
}

或者将图像对象添加到openFile函数中,以便您可以从那里进行目标:

$("a").each(function() {
  var img = $(this).find('img');
  openFile($(this).attr('href'), img);
});

function openFile(href, img) {
  // do stuff
  img.attr('src', something);
}

或者只是将openFile功能合并到jQuery调用中:

$("a").each(function() {
  // do stuff with $(this).attr('href')
  // change $(this).find('img').attr('src',src);
});

答案 1 :(得分:0)

你不需要在包含a的控件上执行.each吗?不是'a'控制本身?

答案 2 :(得分:0)

将此作为另一个参数传递给打开文件,或者更好地通过执行以下操作将其绑定到打开文件:

$('a').each(openFile);

然后

function openFile()
{
 //do stuff on $(this)
}