我有以下HTML
:
<input class="file_upload" type="file" multiple="true" data-photoShootId="@item.PhotoShootItemId" />
以下jQuery
:
<script type="text/javascript">
$(function() {
$('.file_upload').uploadifive({
//*snip*
'formData': {
'PhotoShootItemId': $(this).data('photoShootId')
},
//*snip*
});
});
</script>
脚本本身没有问题。
我的问题是我似乎无法从data-photoShootId
元素中获取file_upload
值。我只是在POST数据中得到undefined
。如果我使用常量值替换.data
调用,则可以正常工作。
如果我使用$(this).attr
和photoShootId="@item.PhotoShootItemId"
,我会得到相同的结果。
答案 0 :(得分:3)
问题是因为代码中的this
并未引用您正在设置插件的元素,而是window
。
要从要在插件调用中使用的元素获取属性,您需要单独循环遍历:
$('.file_upload').each(function() {
$(this).uploadifive({
//*snip*
'formData': {
'PhotoShootItemId': $(this).data('photoShootId')
},
//*snip*
});
});
答案 1 :(得分:1)
请设置如下数据属性: -
<input class="file_upload" type="file" multiple="true" data-photoshootid="@item.PhotoShootItemId" />
获取此属性
$(this).data('photoshootid')
避免对数据属性使用大写字母