JQuery:创建扩展返回变量未定义
JQuery: Creating Extension return variable undefined
我正在创建一个简单的图像拖放jquery扩展。它的作用是拖动一个文件,它显示文件的预览,然后返回一个对象,其中包含文件名和要通过ajax POST发送的图像数据。
(function($) {
$.fn.dnd = function()
{
jQuery.event.props.push('dataTransfer');
$(this).bind('drop',function(e){
var files = e.dataTransfer.files;
var $preview = $(this);
var result = [];
if(files.length > 1)
{
$(this).html('One file only');
return false;
}
if(files[0].type === 'image/png' ||
files[0].type === 'image/jpeg' ||
files[0].type === 'image/ppeg')
{
var fileReader = new FileReader();
fileReader.onload = (function(f)
{
return function(e)
{
result.push({name:f.name,value:this.result});
$preview.removeAttr('style');
$preview.html('<img src="'+ this.result +'" width="80%"/>');
};
})(files[0]);
fileReader.readAsDataURL(files[0]);
}
else
{
$(this).html('images only. GIF not allowed.');
return false;
}
e.preventDefault();
return result;
});
};
}(jQuery));
我以这种方式执行代码。
$(document).ready(function(){
var result = $('#ec-drag-n-drop').dnd();
console.log(result);
}
当我查看控制台时,它返回"未定义"。我错过了什么吗?
您不返回结果。
此代码:
e.preventDefault();
return result;
发生在您对$(this).bind('drop')
的回调中。
因此,您需要通过自己的插件提供回调:
$.fn.dnd = function(callback)
{
jQuery.event.props.push('dataTransfer');
$(this).bind('drop',function(e){
// Your code
callback(result);
}
}
在您的主页中:
$(document).ready(function(){
$('#ec-drag-n-drop').dnd(function(result) {
console.log(result);
});
}
相关文章:
- Javascript变量未定义,onchange不起作用
- 定义的变量未定义
- 无法弄清楚为什么本机 Promise 变量未定义
- Windows 8 Javascript 疯狂 - 变量未定义
- $rootScope变量未定义
- 变量未定义
- Javascript:TypeError变量未定义
- 变量未定义/超出范围
- javascript变量未定义
- Javascript变量未定义错误
- $scope变量未定义,尽管它是在$watch函数内部设置的
- 类型错误:变量未定义
- AngularJs $http变量未定义
- JQuery:创建扩展返回变量未定义
- d3.js变量未定义,但在Firefox控制台中,它可以工作
- Javascript 中用于上传表单数据的变量未定义
- 节点.js模块级变量未定义
- Node.js req.session 变量未定义
- 错误:AngularJs 变量未定义,当使用 grunt 运行时.(泽泽尔)
- 将字符串拆分为两个变量 - 未定义不是一个函数