我正在动态更改几个元素的数据属性。一个' img'和一个' a'类型。 ' img'元素使用以下代码:
$("img[data-image-index-no-"+self.options.typeOfImage+"="+nextIndexNo+"]").data("image-index-no-"+self.options.typeOfImage, newIndexNo);
然后我想改变一个' a' link element并写道:
$("a[data-slide-index="+nextIndexNo+"]").data("slide-index", newIndexNo);
以上没有用,但是我使用它来完成工作:
$("a[data-slide-index="+nextIndexNo+"]").attr("data-slide-index", newIndexNo);
我想知道为什么使用.data
可以使用img元素,但不能使用' a'元件?哪种方法是首选方式?
有关于此的任何想法吗?
答案 0 :(得分:2)
当您触发.data()
方法时,它会尝试查找data-
元素的属性。如果该属性不存在,则该方法将不起作用。
与此类似,.attr()
也尝试查找某些指定元素的属性,但有一点不同,即如果找不到它,则会创建。
因此,在您的情况下,我猜您在实际更新同一元素之前,正在递增和尝试查找具有新nextIndexNo
的元素。由于该元素具有旧的nextIndexNo
值,.data()
方法将无法找到它,因此.attr()
的工作原理。
很高兴我能指出你正确的方向=)