在代码中我这样做:
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
答案 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()
:$()
调用返回的对象的一部分。