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');
就是这样,它会更新。