使用jQuery将锚属性附加到数组

时间:2012-10-17 18:49:27

标签: javascript jquery arrays attributes append

遇到这个问题真的很麻烦,我知道这很简单。谷歌没有太多帮助,因为我不太清楚要问什么。所以这是交易:

我有一个锚列表,需要将每个属性的两个属性附加到特定格式的数组中。我可以轻松地获取每个元素的属性,但我不确定如何将它们附加到数组中。这就是我要找的东西:

目标阵列输出

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

感谢您的帮助!让我们粉笔这个易于声誉:)

5 个答案:

答案 0 :(得分: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 #",则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}) 

问题太简单了,你可能需要不同的东西吗?