遇到这个问题真的很麻烦,我知道这很简单。谷歌没有太多帮助,因为我不太清楚要问什么。所以这是交易:
我有一个锚列表,需要将每个属性的两个属性附加到特定格式的数组中。我可以轻松地获取每个元素的属性,但我不确定如何将它们附加到数组中。这就是我要找的东西:
目标阵列输出
slides = [{
img: 'img/aaron1.jpg',
desc: '127'
}
HTML
<section id="photoBin">
<ul>
<li><a id="test" href="img/aaron1.jpg" title="Photo #127">127</a></li>
<li><a href="img/aaron2.jpg" title="Photo #128">128</a></li>
<li><a href="img/aaron3.jpg" title="Photo #129">129</a></li>
<li><a href="img/aaron4.jpg" title="Photo #130">130</a></li>
<li><a href="img/aaron5.jpg" title="Photo #131">131</a></li>
<li><a href="img/aaron6.jpg" title="Photo #132">132</a></li>
</ul>
</section>
的JavaScript
var slides = [];
$('li a').each(function(){
var el = $(this)
img,
desc;
img = el.attr('href');
desc = el.attr('title').split('Photo #');
});
感谢您的帮助!让我们粉笔这个易于声誉:)
答案 0 :(得分:3)
您错过了通过push
将其添加到阵列的部分。
此外,split
为您提供了一个数组;如果你只是在寻找分割的第二部分(数字),你需要通过索引访问器[1]
访问该数组的第二个元素:
var slides = [];
$('li a').each(function(){
var el = $(this);
slides.push({
img: el.attr('href'),
desc: el.attr('title').split('Photo #')[1]
});
});
您可能还想考虑防弹;如果el.attr('title')
不是字符串或不包含"Photo #"
,则split / index访问器将抛出异常。
答案 1 :(得分:0)
var slides = [];
$('li a').each(function(){
var el = $(this)
img,
desc;
img = el.attr('href');
desc = el.attr('title').split('Photo #');
slides.push({
img: img ,
desc: desc
})
});
答案 2 :(得分:0)
小修改可以为您提供所需的信息:
var slides = [];
$('li a').each(function(){
var el = $(this)
img,
desc;
var slide = { img : el.attr('href'),
desc: el.attr('title').split('Photo #')[1] };
slides.push(slide);
});
应该指出,这不一定是万无一失的。如果title属性错误或为空,则期待奇怪的js错误。在将幻灯片推送到阵列之前,您可能需要进行一些测试以确保获得预期效果。
答案 3 :(得分:0)
小提琴:http://jsfiddle.net/gromer/zqn43/
var slides = [];
$('li a').each(function(){
var el = $(this);
var imgHref= el.attr('href');
var description = el.attr('title').split('Photo #')[1];
slides.push({
img: imgHref,
desc: description
});
});
答案 4 :(得分:0)
你想添加以下行,对吗?
slides.push({img: img, desc: desc})
问题太简单了,你可能需要不同的东西吗?