2011-06-22 36 views
1

我在這裏的功能:設置與.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" />。沒有ID。難道我做錯了什麼?我檢查了幾次jquery文檔,我很確定那是怎麼做到的。

我認爲問題出現在.load()中,但我不確定哪些不起作用。

謝謝!

(如果你需要的話,我可以給你之前的代碼)

解決:

就必須給id來newImg而不是imageLoad。

+0

只是爲了澄清,您要設置#imageBig的ID? – kinakuta

+0

什麼是'imageLoad'?你爲什麼遞減? – SLaks

+0

是newPath2你的代碼中的一個變量? –

回答

1

newImg由於$('<img />').attr('src',$(this).attr('src'))因爲$('<img />').attr('src',$(this).attr('src'))具有相同的SRC,但不是相同的ID,那麼我認爲您正在追加(並引用)newImg,因此您應該將ID分配給newImg而不是loadImage。

+0

我試過你的第一個解決方案。不管用!它做同樣的事情。但我發現奇怪的是,通過.attr(),它獲得了src屬性,但不是第二個。 – Elggetto

+1

newImg由於$('').attr('src',$(this).attr('src'))具有相同的SRC,但不是相同的ID,因此我認爲您正在追加(並且引用)newImg,所以你應該把ID改爲newImg而不是loadImage。 –

+0

是的!它的工作謝謝你!你可能想編輯你的答案,以便我可以接受它。你一直在幫助我意識到這個簡單的錯誤。 – Elggetto

0

我可能是有點什麼你正在嘗試做的困惑,但爲什麼不只是做:

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

那不是給你的ID呢?

1

安裝員和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();