无法获取属性值

时间:2014-05-15 10:44:41

标签: javascript jquery

我有以下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).attrphotoShootId="@item.PhotoShootItemId",我会得到相同的结果。

2 个答案:

答案 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')

避免对数据属性使用大写字母