为什么jQuery返回对象在attr('src')

为什么jQuery返回对象在attr('src')

问题描述:

这返回我对象对象。如何能做一个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); 
}); 

在你的代码,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

因为imgs的一个对象。此行:

imgs.src; 

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

imgs = imgs.attr("src"); 

,它应该正常工作

你可以使用.MAP得到一个数组。

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