为什么我找不到使用数据属性

时间:2017-08-03 00:03:40

标签: javascript jquery

在代码中我这样做:

var markerName = $(fileInput).closest('tr.file-input-row').find('input[type="text"]')[0].value.replace(/[^a-z0-9]/gi, '-');
$.data(fileInput, 'for', markerName);

在这种情况下,markerName是“file-1”

如果我查看使用:

$('input[type="file"][data-for="file-1"]')

我得到一个length等于0的对象......所以找不到。

但是,如果我这样做:

$('input[type="file"]:first').data().for

在这种情况下,第一个输入[type =“file”]是我设置数据属性的相同输入,我得到:

"file-1"

......正如所料。

看起来它已被设置,但随后无法访问。

有什么想法?

TIA

2 个答案:

答案 0 :(得分:2)

这不起作用,因为当您在代码的第一部分中执行数据调整时,您不会更新DOM对象。要更新DOM对象,您应该使用attr(key,value)。

有关数据和attr之间差异的更多信息,可以得到一个很好的答案:jQuery Data vs Attr?

答案 1 :(得分:-1)

  

如果我查看使用:

$('input[type="file"][data-for="file-1"]')

.data()jQuery.data()都不是jQuery()$()调用返回的对象的一部分。