2012-10-17 84 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}) 

這是一個問題太簡單了,所以可能是你需要不同的東西?