为什么jquery在attr('src')中返回Object

时间:2012-08-12 08:43:30

标签: javascript jquery

这返回我的对象​​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);
});

3 个答案:

答案 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');
});