2013-01-15 146 views
2

請考慮下面的相冊示例。JQuery更新數據屬性

專輯的第一頁和最後一頁是專輯的一半大小。我設置attr('data-width')attr('data-width_correct')用於比較

對於實施例 - checkImageDimesions()

//Define if first or last page 
if($(this).is(':first-child') || $(this).is(':last-child')) 
{ 
    $(this).find('img').attr('data-height_correct' , maxHeight); 
    $(this).find('img').attr('data-width_correct' , maxWidth/2); 
} else{ 
    $(this).find('img').attr('data-height_correct' , maxHeight); 
    $(this).find('img').attr('data-width_correct' , maxWidth); 
} 

這按預期方式工作,更新與所述正確的值DATA-。我的下一步是如果width > width_correct我想添加一個調整大小的類。

if($(this).find('img').data('width') > $(this).find('img').data('width_correct')) 
{ 

    $(this).addClass('resize'); 
} 

這個函數的調用發生在jQuery .sortable()的成功之上。在第一個排序這個工作正常,但是在隨後的排序,這是不正確尺寸的初始圖像保留.resize和任何新的形象,將返回false上width > width_correct沒有得到分配resize

可排序

$("#sortable").sortable(
{ 
success: function(){checkImageDimension()} 
} 
+1

請仔細閱讀本:http://forum.jquery.com/topic/when-to-use-attr-vs-data – mate64

+0

@ cept0這正是我一直在尋找 - 會是很好的答案! – Bungdaddy

+0

謝謝 - 我已在下面發佈報價 – mate64

回答

1

接對象的數據(的東西,不是一個簡單的字符串,數字, 或布爾)到DOM節點往往會導致在Internet Explorer中 內存泄漏。這是因爲DOM節點不是IE中的本地Javascript對象 ,所以它不知道如何垃圾收集連接到它們的東西 。

如果你只需要一個簡單的標誌或編號DOM節點上,你可以使用 或者ATTR(「x_mycount」,1)或只設置使用this.x_mycount代替DOM節點 上的屬性。 (請小心選擇屬性或 屬性名稱,因爲您處於DOM名稱空間中,如果您不小心,可能會摔倒 。)儘管使用.data(),但最安全。

來源:forum.jquery.com/topic/when-to-use-attr-vs-data

0

要更新數據屬性,只需在數據函數中添加第二個參數。

$('#elementID').data('width-correct', '400'); 

就是這樣,它會更新。