为什么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
。
答
因为imgs
是的一个对象。此行:
imgs.src;
什么也没做。它只是返回。返回值没有做任何事情。修改成:
imgs = imgs.attr("src");
,它应该正常工作
答
你可以使用.MAP得到一个数组。
i = imgs.map(function() {
return $(this).attr('src');
});
完美,谢谢先生的帮助 – Sam 2012-08-12 08:54:05
@Sam - 请注意我对你的选择器的额外评论。 – jfriend00 2012-08-12 08:55:08
我现在用map()测试它工作正常... – Sam 2012-08-12 08:56:41