JQuery更新数据属性

时间:2013-01-15 20:17:35

标签: jquery dom

请考虑以下相册示例。

专辑的第一页和最后一页是专辑点差的一半。我将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);  
} 

这可以按预期工作,使用正确的值更新数据。我的下一步是width > width_correct我想添加一个调整大小的类。

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

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

调用此函数发生在jQuery .sortable()的成功。在第一次排序时,这可以正常工作,但是在后续排序中,未正确调整大小的初始图像会保留.resize,并且在width > width_correct上返回false的任何新图像都不会被分配resize

可排序

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

2 个答案:

答案 0 :(得分:1)

  

附加对象数据(不是简单的字符串,数字,   或者boolean)到DOM节点经常会导致Internet中的内存泄漏   资源管理器。那是因为DOM节点不是本机Javascript对象   在IE中,所以它不了解如何垃圾收集的东西   附在他们身上。

     

如果您只需要DOM节点上的简单标记或数字,则可以使用   要么attr(“x_mycount”,1),要么只在DOM节点上设置属性   使用this.x_mycount代替。 (小心选择属性或   属性名称,因为你在DOM名称空间中,你可能会破坏   如果你不小心的话。)尽管使用.data()是最安全的。

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

答案 1 :(得分:0)

要更新数据属性,只需向数据函数添加第二个参数。

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

那就是它,它会更新。