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

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

 if($(this).find('img').data('width') > $(this).find('img').data('width_correct')) { $(this).addClass('resize'); } 

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

可排序

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

将对象数据(不是简单的字符串,数字或布尔值)附加到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

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

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

就是这样,它会更新。