2012-10-17 85 views
0

对这个问题有困难,我知道它很简单。谷歌没有太多帮助,因为我不太确定要问什么。所以这里的交易:将锚点属性添加到jQuery数组中

我有一个锚的列表,需要追加两个属性从他们每个人以特定格式的数组。我可以轻松获取每个元素的属性,但我不确定如何将它们附加到数组。下面是我在寻找:

目标阵列输出

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 #'); 
}); 

感谢您的帮助!让我们粉笔此一上来就轻松的声誉:)

回答

3

你错过了通过push将它们添加到数组中的部分。

另外,split给你一个数组;如果你只是寻找第二件分割(数),则需要通过索引访问[1]访问数组的第二个元素:

http://jsfiddle.net/H4wWX/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 #",则拆分/索引存取器将引发异常。

+0

最干净的方式在这里。 – Gromer

+0

标题理论上始终有前缀,但我更愿意减少错误的机会。你有建议总是从标题中挑选数字字符串吗?它肯定会包含一个数字,尽管数字长度可能会有所不同 – technopeasant

+0

对于减少的变量也是巨大的荣誉。我不能为我的生活记住.push()方法 - 所以额外的赞扬不要嘲笑! – technopeasant

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 
}) 
}); 
+0

你只需要第一个吗? – AMember

+0

“desc”最终将成为一个具有两个值的数组... desc [0]将是'',并且desc [1]将是数字。 –

+0

所以只需要你需要的价值?!? – AMember

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错误。在将幻灯片推送到阵列之前,您可能需要进行一些测试以确保获得所期望的结果。

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 
    }); 
}); 
0

要添加以下行,对吧?

slides.push({img: img, desc: desc}) 

这是一个问题太简单了,所以可能是你需要不同的东西?