何时用“data”或“attr”更改数据属性?

时间:2014-12-11 19:16:18

标签: jquery custom-data-attribute

我正在动态更改几个元素的数据属性。一个' 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'元件?哪种方法是首选方式?

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:2)

当您触发.data()方法时,它会尝试查找data-元素的属性。如果该属性不存在,则该方法将不起作用。

与此类似,.attr()也尝试查找某些指定元素的属性,但有一点不同,即如果找不到它,则会创建

因此,在您的情况下,我猜您在实际更新同一元素之前,正在递增尝试查找具有新nextIndexNo的元素。由于该元素具有旧的nextIndexNo值,.data()方法将无法找到它,因此.attr()的工作原理。

很高兴我能指出你正确的方向=)