【问题标题】:Setting multiple attributes with .attr()使用 .attr() 设置多个属性
【发布时间】:2011-06-22 21:01:51
【问题描述】:

我在这里有一个功能:

编辑:在这里给你完整的代码!

$(".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。所以当我的图像被创建时,它只会:&lt;img src="newpath2" /&gt;。没有身份证。难道我做错了什么?我检查了 jquery 文档几次,我很确定这是怎么做的。

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

谢谢!

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

已解决:

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

【问题讨论】:

  • 澄清一下,您正在尝试在#imageBig 上设置 id?
  • 什么是imageLoad?你为什么要减少它?
  • newPath2 是你代码中的变量吗?
  • 我之前给过你完整的代码。对不起,我的坏事!
  • 我认为您应该将 ID 提供给 $newImage。

标签: jquery load src attr


【解决方案1】:

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

【讨论】:

  • 我尝试了您的第一个解决方案。也不行!它做同样的事情。但是我觉得奇怪的是,通过.attr(),它得到了src属性,而不是第二个。
  • newImg 因为$('').attr('src',$(this).attr('src')) 有相同的SRC,但是ID不一样,那么我认为您正在附加(并引用)newImg,因此您应该将 ID 提供给 newImg 而不是 loadImage。
  • 是的!成功了,谢谢!您可能想编辑您的答案,以便我接受。你帮我解决了这个简单的错误。
  • 就是这样!很高兴我能帮上忙!
【解决方案2】:

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();

【讨论】:

    【解决方案3】:

    我可能对您正在尝试做的事情感到有些困惑,但为什么不直接做:

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

    那不也会给你 id 吗?

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      相关资源
      最近更新 更多