这返回我的对象Object。如何制作一个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);
});
答案 0 :(得分: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
的对象。
答案 1 :(得分:1)
因为imgs
是对象。这一行:
imgs.src;
什么都不做。它只是返回。返回值没有任何操作。将其更改为:
imgs = imgs.attr("src");
它应该可以正常工作
答案 2 :(得分:1)
您可以使用.map来获取数组。
i = imgs.map(function() {
return $(this).attr('src');
});