我设置了一个图像滚动条,并通过名为current_item的变量保留当前项目的计数。现在,我想在索引与item_count匹配的图像列表中显示图像的alt文本。
这是JQuery
var scroll_text = $('#ax_campaign_content li').index(current_item).children('img').attr('alt');
$('#ax_campaign_scroller h4').text(scroll_text);
这是基本的html结构:
<div id="ax_campaign_content">
<ul>
<li><img alt="Image 1"></li>
<li><img alt="Image 2"></li>
</ul>
</div>
<div id="ax_campaign_scroller">
<h4>Image Text Goes Here</h4>
</div>
这是我正在尝试做的但是它不起作用。谁知道我哪里出错?
答案 0 :(得分:3)
您的代码将迭代li
元素,然后迭代li
内的图像,这将始终只是一个图像。所以你所做的事情永远不会得到与current_item
变量相关的任何内容。
相反,您可能想尝试将current_item
传递给.eq
,先使用该索引获取li
元素,然后获取图片alt
属性:
var scroll_text = $("#ax_campaign_content li")
.eq(current_item)
.find("img").attr("alt");
$("#ax_campaign_scroller h4")
.text(scroll_text);
或者您可以使用单行(添加新行和标签以提高可读性)并在同一选择器中选择图像而不使用.find
:
$("#ax_campaign_scroller h4").text(
$("#ax_campaign_content li:eq("+current_item+") img")
.attr("alt")
);
答案 1 :(得分:2)
尝试方法 - http://api.jquery.com/eq/
$('#ax_campaign_content li img').eq(current_item).attr('alt');
答案 2 :(得分:0)
你们每个人都循环遍历每一个li元素,所以当你在每个函数中寻找img时,你正在看li:
$(this).children("img").index()
总是会返回零,因为每个li里面只有1个img。
Jquery .each已经为你提供了索引,所以你可以像你这样对你的current_item进行测试:
$('#ax_campaign_content li').each(function(index) {
if (index == current_item){
scroll_text = $(this).children('img').attr('alt');
$('#ax_campaign_scroller h4').text(scroll_text);
}
});
回应更新后的评论: 你总是可以去单行!
$('#ax_campaign_scroller h4').text(
$('#ax_campaign_content li').eq(current_item).children('img').attr('alt')
);