在jQuery中从外部函数调用函数属性

时间:2015-10-28 08:42:14

标签: javascript jquery

我试图从子函数调用输入属性值。

代码就在这里:

     $("input.ups").fileinput({
         uploadUrl: "/imalatci/products/uploadimages",
         allowedFileExtensions: ["jpeg","jpg", "png", "gif"],
         maxImageWidth: 500,
         maxImageHeight: 400,
         maxFileCount: 5,
         resizeImage: true,
         language:"tr",
         uploadExtraData: function() {
             return {
                 product_id: $(this).attr('product_id')
             };
         }
     }).on('filepreupload', function() {
         $('#kv-success-box').html('');
     }).on('fileuploaded', function(event, data) {
         $('#kv-success-box').append(data.response.link);
         $('#kv-success-modal').modal('show');
     });

我希望在此函数中获得$(" input.ups")product_id属性:

uploadExtraData: function() {
                 return {
                     product_id: $(this).attr('product_id')
                 };
             }

但它会出现undefined错误?

我们如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

this函数中uploadExtraData的范围不是插件实例化的input.ups元素。要实现您的要求,您需要单独循环它们,以便获得对元素的引用。试试这个:

$("input.ups").each(function() {
    var $input = $(this);
    $input.fileinput({
        uploadUrl: "/imalatci/products/uploadimages",
        allowedFileExtensions: ["jpeg","jpg", "png", "gif"],
        maxImageWidth: 500,
        maxImageHeight: 400,
        maxFileCount: 5,
        resizeImage: true,
        language:"tr",
        uploadExtraData: function() {
            return { product_id: $input.attr('product_id') };
        } 
    }).on('filepreupload', function() {
        $('#kv-success-box').html('');
    }).on('fileuploaded', function(event, data) {
        $('#kv-success-box').append(data.response.link);
        $('#kv-success-modal').modal('show');
    });
});

我还建议使用data-*属性,而不是像product_id这样的非标准属性。