0

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

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

目标数组输出

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

谢谢你的帮助!让我们把它归结为容易的声誉:)

4

5 回答 5

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 #",则拆分/索引访问器将抛出异常。

于 2012-10-17T18:54:03.017 回答
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 
})
});
于 2012-10-17T18:52:40.717 回答
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); 
});

需要注意的是,这不一定是万无一失的。如果标题属性错误或为空,请期待奇怪的 js 错误。在将幻灯片推到阵列之前,您可能需要进行一些测试以确保您得到您期望的结果。

于 2012-10-17T18:52:51.893 回答
0

您想添加以下行,对吗?

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

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

于 2012-10-17T18:56:49.730 回答
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
    });
});
于 2012-10-17T18:55:17.077 回答