我设置了jquery var location_dir
并在var中使用,如下所示:
var location_dir = 'home/user';
var settings = {
formData: {
location: location_dir
}
}
$("#mulitplefileuploader").uploadFile(settings);
location_dir
点击事件更新如下:
$(document).on('click', 'a.folder', function () {
location_dir = $(this).data("location");
});
所以我的最终剧本看起来像这样:
var location_dir = 'home/user';
$(document).on('click', 'a.folder', function () {
location_dir = $(this).data("location");
});
var settings = {
formData: {
location: location_dir
}
}
$("#mulitplefileuploader").uploadFile(settings);
问题是location_dir
没有更新这些点击事件,而是维护初始值。我是否需要将var settings = { ...
包装在函数或其他内容中?
答案 0 :(得分:1)
该变量不是问题,它是您的settings
变量,更新它!
$(document).on('click', 'a.folder', function () {
settings.formData.location = $(this).data("location");
});
你只是抓住那个变量的值,它不是一个参考。您必须更新settings
,因为它是您在uploadFile
函数中实际使用的内容。
答案 1 :(得分:1)
问题是, JS不是被动的。当解析器通过此代码时,settings.formData.location
以及uploadFile
在此时获得location_dir
的值。点击时,您只需更改location_dir
变量,而不更改其他变量。
假设您需要更改settings.formData.location
的{{1}},您可以:
如果提供了重新初始化配置的界面,则需要检查该插件的文档。
您还可以修改插件的内部,找到存储该值的位置,然后在那里进行修改。
删除现有元素,替换它并使用新设置重新初始化该新元素上的插件。原油,但应该工作。
希望插件依赖配置对象获取位置路径,而不是在内部缓存它。对象通过引用传递,只要您具有该引用,就可以对其进行编辑。如果他们没有缓存它,那么您可以直接执行uploadFile
,它应该更改插件使用的位置。
答案 2 :(得分:0)
你需要在点击事件中完成所有这些操作,因为无论如何正在运行外部项目,而你在点击时所做的只是设置值。
var location_dir = 'home/user';
$(document).on('click', 'a.folder', function () {
var loc = ($(this).data("location"))? $(this).data("location") : location_dir;
$("#mulitplefileuploader").uploadFile({formData: {location: loc }});
});