2011-09-01 36 views
2

請注意我已經更新了新的數據這個問題和鏈接jQuery的。數據()的正確用法

我已經基於this documentation

代碼此代碼的工作在這裏:http://jsfiddle.net/mplungjan/7ZBxP/

但不是在這裏:

我得到Error: $(this).data("orgSize") is undefined

在線width: $(this).data("orgSize").width,

$(".ui-tooltip img.thumb") 
.live("mouseenter",function() { 
    cont_left = $(".ui-tooltip").position().left; // no container until hover 
    // save this scaled down image size for later 
    $(this).data("newSize",{width:this.width,height:this.height}) 
    $(this).parent().parent().css("z-index", 1);  
    $(this).animate({ 
     width: $(this).data("orgSize").width, 
     height: $(this).data("orgSize").height, 
     left: "-=50", 
     top: "-=50" 
    }, "fast"); 
    }) 

這裏是我定義它:

var imageObject = $('<img/>').load(function(){ 
     var w = this.width; 
     var h = this.height; 
     var orgSize = {width:w,height:h}; 
     var imgId = "thumb_"+p_sPubNum; 
     var actualImage = $('<img/>') 
     .attr("id",imgId) 
     .attr("src",sOpsUrl + sImageUrl) 
     .attr("alt",loadingLabel+': '+p_sPubNum) 
     .addClass("thumb");    
     // set EITHER width OR height if either is > 150 
     if (w<h && w>150) actualImage.attr("width",150); 
     else if (w>h && h > 150) actualImage.attr("height",150); 

     $('.qTip2Image').append(actualImage); 
     // save original size for later  
     $("#"+imgId).data("orgSize",orgSize); 

    }).error(function() { 
     if ((iPos + 1) < aPublicationNumbers.length) { 
     var sNextNumber = aPublicationNumbers[(iPos + 1)]; 
     getImage(sNextNumber, sDirection); 
     } 
    }).attr("src",sOpsUrl + sImageUrl); 
+0

爲什麼你不使用jQuery創建元素,並添加onload事件處理程序的原因嗎? – ThiefMaster

+0

@小偷 - 我現在有。 – mplungjan

+0

最好打開一個新的問題,並引用這個背景和背景。 –

回答

1
$('.qTip2Image').append(actualImage); 
    // save original size for later  
$("#"+imgId).data("orgSize",orgSize); // <<<<<<<<<< too early 

var actualImage = $('<img/>') 
.attr("id",imgId) 
.attr("src",sOpsUrl + sImageUrl) 
.attr("alt",loadingLabel+': '+p_sPubNum) 
.addClass("thumb") 
.data("orgSize",orgSize); // <<<<<<<<<< This is much better!!! 

原因,在小提琴的工作是要小得多DOM

0

它,因爲你正在訪問,因爲你剛剛創建的elemnt寬度proerty至極未定義給你不確定!

你可以從這個小提琴看到的代碼是正確的

http://jsfiddle.net/ZL4DG/

+0

感謝您的答案 - 我在onload函數中設置數據。那是在圖像被創建和加載之後。 – mplungjan

+0

你可以看到小提琴的工作。這個問題可能與imgId有關,我們沒有看到它來自哪裏。此外,您還缺少a)在提示 –

+0

中,小提琴沒有使用動態創建的項目。什麼)我錯過了? – mplungjan

0

您沒有設置圖像你怎麼能指望它會觸發load事件的src。在這種情況下附加錯誤event處理程序。此外,您還沒有爲創建的元素設置任何寬度和高度,以便在沒有源設置的情況下不會有任何默認尺寸。

imgId你的代碼定義在哪裏?你在哪裏設置id到新創建的元素?那麼如何找到$("#"+imgId)

+0

當然我是 - onload如果我沒有,請觸發 - 爲您更新問題 – mplungjan

+0

將id設置爲圖像的位置? – ShankarSangoli

+0

請參閱更新。 – mplungjan