我目前正在尝试更新Jquery插件(simpleCropper),以便我可以动态添加其他文件输入。我设法让它工作,但有一个奇怪的错误。为了使它工作,我不得不更新一些jquery调用并创建一个嵌套的销毁函数,然后重新启动。
cropme.simpleCropper.destroy();
cropme = $('.cropme').simpleCropper();
在console.log(cropme)上;它显示与销毁之前完全相同,除了添加的新元素是正确的。
我可以在页面加载时打开它,它按预期工作,当我在销毁和重新初始化后打开文件对话框时出现问题。当文件对话框打开并且我选择图像时,它不会按预期触发文件上载更新输入,它会重新打开一个新对话框,然后在第二次尝试时正常工作。没有出现控制台错误。
我知道它没有被触发,因为“检测到更改”在最初(在销毁之前)然后在第二次尝试时不会出现在控制台中。
fi.addEventListener("change", function() {
console.log('change detected');
imageUpload($(document.getElementById('preview')).get(0));
// Reset input value
$(this).val("");
}, true);
销毁功能:
$.fn.simpleCropper.destroy = function(){
$(document.getElementById('fileInput')).unbind(); //recently added, tried without
$(document.getElementsByClassName('ok')[0]).unbind(); //recently added, tried without
$(document.getElementsByClassName('cancel')[0]).unbind(); //recently added, tried without
$( "#fileInput" ).remove();
$( "#myCanvas" ).remove();
$( "#modal" ).remove();
$( "#preview" ).remove();
reset();
};
reset()是指将插件变量重置为默认值的函数。
可能导致此行为的原因是什么?感谢