首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个jquery循环有什么问题?

这个jquery循环有什么问题?
EN

Stack Overflow用户
提问于 2011-11-17 12:06:01
回答 5查看 213关注 0票数 0

简单地总结一下我想做的事情:我为用户提供了查看缩略图的工具,每个缩略图都有一个相应的下载链接。单击下载链接时,我将向用户提供一个确认div,并假设用户单击“同意”,他们将能够继续下载缩略图的完整大小版本。

为此,我使用一个中继器生成缩略图。我正在为“ItemCreated”事件中的每个链接创建一个唯一的id,以及一个唯一的隐藏字段,该字段存储该缩略图的目标文件的相对路径。

当用户单击相应缩略图的“下载”链接时,我的代码应该选择“同意”链接,并使用单击的项的隐藏字段值更新它的目标路径(我希望这是合理的?)这基本上意味着,每当单击“下载”按钮时,就会更新“同意”链接,以引导您找到正确的文件。

然而,我遇到的问题是,我的“同意”链接从来没有更新过--似乎每个缩略图都指向相同的文件。

下面是呈现的缩略图列表的一个片段:

代码语言:javascript
复制
<div class="download-listing">
    <div class="download">
        <img src="/img/thumb0.jpg" alt="" />
        <div id="downloadLink0" class="dl">Download</div>
        <input type="hidden" id="hf0" value="/GetImage.ashx?path=/img/0.jpg" class="hf" />                    
    </div>
    <div class="download">
        <img src="/img/thumb1.jpg" alt="" />
        <div id="downloadLink1" class="dl">Download</div>
        <input type="hidden" id="hf1" value="/GetImage.ashx?path=/img/1.jpg" class="hf" />              
    </div>
    <div class="download">
        <img src="/img/thumb2.jpg" alt="" />
        <div id="downloadLink2" class="dl">Download</div>
        <input type="hidden" id="hf2" value="/GetImage.ashx?path=/img/2.jpg" class="hf" />                    
    </div>
</div>
<input id="count" type="hidden" value="3" />
<!-- Hidden popup -->
<div id="popup">
<p><a id="close" class="bClose action">I disagree</a><a id="file-link" class="action" href="#">I agree</a></p>
</div>

希望您可以从上面的代码中看到,我正在尝试从单击的下载中提取隐藏的字段路径,然后用这个值更新#file-link 'href‘。

我使用的Javascript/Jquery (这就是问题所在)如下:

代码语言:javascript
复制
<script type="text/javascript">
$(document).ready(function () {
  for (var i = 0; i < $("#count").val(); i++) { 
    var index = i;
    $("#downloadLink" + index).click(function () {
      $('#file-link').attr('href', $('#hf' + index).val());
      $('#popup').bPopup();
    });          
  }      
});
</script>

然而,所有这些都不起作用!似乎正在发生的是,每个下载链接都指向相同的路径--列表中的最后一个路径。我不知道我哪里出了问题。我有什么明显的遗漏吗?

我很感谢你的帮助!

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-17 12:11:40

这样做不是更容易吗?

代码语言:javascript
复制
$(function(){
    $(".download .dl").click(function(){
        $('#file-link').attr('href', $(this).next("input").val());
        $('#popup').bPopup();
    });
});
票数 2
EN

Stack Overflow用户

发布于 2011-11-17 12:20:50

试试这样的..。

代码语言:javascript
复制
 $("div[id*='downloadLink']").click(function () {
          $('#file-link').attr('href',$(this).siblings('img').attr('src'));
          $('#popup').bPopup();
});         

单击任何下载链接后,此代码将将关联的图像href路径传递给文件链接元素。

这里是工作的小提琴

票数 2
EN

Stack Overflow用户

发布于 2011-11-17 12:16:22

我建议不要使用所有这些输入字段。它只是创建了一堆不必要的标记。为什么不将#count值简单地存储在JavaScript变量中呢?还可以删除包含图像路径的输入。您可以将该信息存储在每个下载链接的属性中,命名为“数据路径”。例如:

代码语言:javascript
复制
<div id="downloadLink0" class="dl" data-path="/GetImage.ashx?path=/img/0.jpg">Download</div>

现在,回到原来的问题,上面的标记可以很容易地解决这个问题:

代码语言:javascript
复制
$('.dl').click(function(){
    $('#file-link').attr('href', $(this).attr('data-path')); //could also do $(this).data('path') if using jQuery 1.6 or later
    $('#popup').bPopup();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8166814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档