2012-08-12 21 views
0

這返回我對象對象。如何能做一個src數組?爲什麼jQuery返回對象在attr('src')

$('#mainContainerPortfolio #activateBox').click(function(){ 

    var clickedAlt = $(this).children('img').attr('alt'); 
    var imgs = $('#mainContainerPortfolio #projectImg[alt="'+clickedAlt+'"]'); 
    imgs.src; 
    var i = []; 
    i.push(imgs); 

    console.log(i); 
}); 

回答

3

在你的代碼,imgs是一個jQuery對象,而不是一個DOM元素。因此,它沒有.src屬性。

如果你想在jQuery對象圖像的.src屬性,那麼你需要做以下之一:

var src = imgs.attr("src"); 

,或者從jQuery對象獲得第一個DOM元素:

var src = imgs[0].src 

此外,您的代碼還有其他幾個錯誤。如果你希望積累的點擊到一個數組中的所有元素的src值,你可以做這樣的事情:

$('#mainContainerPortfolio #activateBox').click(function(){ 

    var clickedAlt = $(this).children('img').attr('alt'); 
    var imgs = $('#mainContainerPortfolio #projectImg[alt="'+clickedAlt+'"]'); 
    var srcs = imgs.map(function(index, elem) { 
     return(elem.src); 
    }).get(); 

    console.log(srcs); 
}); 

我覺得也有你的選擇問題,因爲你只能有一個元素與id="projectImg",所以應該沒有理由使用它的屬性[alt =「'+ clickedAlt +'」]。

同樣,'#mainContainerPortfolio #activateBox'只能更改爲'#activateBox',因爲只能有一個對象的ID爲activateBox

+0

完美,謝謝先生的幫助 – Sam 2012-08-12 08:54:05

+2

@Sam - 請注意我對你的選擇器的額外評論。 – jfriend00 2012-08-12 08:55:08

+0

我現在用map()測試它工作正常... – Sam 2012-08-12 08:56:41

1

因爲imgs的一個對象。此行:

imgs.src; 

什麼也沒做。它只是返回。返回值沒有做任何事情。修改成:

imgs = imgs.attr("src"); 

,它應該正常工作

1

你可以使用.MAP得到一個數組。

i = imgs.map(function() { 
    return $(this).attr('src'); 
}); 
相關問題