使用.attr()设置多个属性

时间:2011-06-22 21:01:51

标签: jquery load src attr

我在这里有一个功能:

编辑:在这里为您提供了完整的代码!

$(".thumbnail").live("click",
    function(){
    $('#imageBig').find("#pictureContainer").remove();

    $('#loadingImage').fadeIn();

    var path = $(this).children().attr("src");
    var newPath = path.substring(0, path.length-9);
    var newPath2 = newPath += ".jpg";

    var imageLoad = new Image();

    $(imageLoad).load(function () {
        if (--imageLoad == 0) {
            // ALL DONE!
        }
        // anything in this function will execute after the image loads
        $('#loadingImage').fadeOut();
        var newImg = $('<img />').attr('src',$(this).attr('src'));
        newImg.css("height","400px").css("width","600px");
        $('#imageBig').append( $(newImg) );
    })
    .attr({
        src:newPath2,
        id:"pictureContainer"
    });
})

我的问题在于.attr()

加载图片时,它会更改src(因此第1行“src:newPath2”工作),但它不会输入ID。因此,当我的图像被创建时,它只会:<img src="newpath2" />。没有身份证。难道我做错了什么?我查了几次jquery文档,我很确定这是怎么做的。

我认为问题来自.load(),但我不确定什么不起作用。

谢谢!

(如果你需要,我可以在此之前给你代码)

已解决:

只需将id提供给newImg而不是imageLoad。

3 个答案:

答案 0 :(得分:1)

newImg由于$('<img />').attr('src',$(this).attr('src'))而具有相同的SRC,但不是相同的ID,那么我认为您要附加(并引用)newImg,因此您应该将ID提供给newImg而不是loadImage。

答案 1 :(得分:1)

Setter和Getter!

(function($) {
    // Attrs
    $.fn.attrs = function(attrs) {
        var t = $(this);
        if (attrs) {
            // Set attributes
            t.each(function(i, e) {
                var j = $(e);
                // Aplica atributos
                for (var attr in attrs) {
                    j.attr(attr, attrs[attr]);
                };
            });
            return t;
        } else {
            // Get attributes
            var a = {},
                r = t.get(0);
            if (r) {
                r = r.attributes;
                for (var i in r) {
                    var p = r[i];
                    if (typeof p.nodeValue !== 'undefined') a[p.nodeName] = p.nodeValue;
                }
            }
            return a;
        }
    };
})(jQuery);

使用:

// Setter
$('#element').attrs({
    'name' : 'newName',
    'id' : 'newId',
    'readonly': true
});

// Getter
var attrs = $('#element').attrs();

答案 2 :(得分:0)

我可能会对你想要做的事感到困惑,但为什么不这样做呢:

var newImg = $('<img />').attr('src',$(this).attr('src')).attr('id',$(this).attr('id'));

这也不会给你身份证明吗?