Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将调用click以编程方式触发的参数/参数传递给onchange侦听器_Javascript_Jquery_Dom Events_Jquery Trigger - Fatal编程技术网

Javascript 如何将调用click以编程方式触发的参数/参数传递给onchange侦听器

Javascript 如何将调用click以编程方式触发的参数/参数传递给onchange侦听器,javascript,jquery,dom-events,jquery-trigger,Javascript,Jquery,Dom Events,Jquery Trigger,在我的表单中,在一组重复行(动态创建)中,每行上都有一个按钮,允许用户上载一个文件,然后该文件将链接/绑定到该行中的数据 head head upload ---- ---- -------- x y <button> a b <button> m n <button> 头上传 ---- ---- -------- xy a b m n 当这些按钮中的任何一个被

在我的表单中,在一组重复行(动态创建)中,每行上都有一个按钮,允许用户上载一个文件,然后该文件将链接/绑定到该行中的数据

head   head    upload
----   ----    --------
x      y       <button>
a      b       <button>
m      n       <button>
头上传
----   ----    --------
xy
a b
m n
当这些按钮中的任何一个被点击时,我显然可以很容易地确定我在哪一行。假设我在id=“row_2”的行中。我有一个从点击按钮调用的函数

现在我调用
$(“#fileUploader”)。单击()
以启动文件选择对话框。当用户选择一个文件并单击“确定”时,将自动调用
OnFileUploaderChange()
函数。在该函数中,我获得了文件,现在我需要知道初始按钮来自第2行,以便我可以将其与正确的行链接/关联

摘要:
OnButtonClick()
触发
OnFileUploaderClick()
这会导致自动触发
OnFileUploaderChange()
。我在
OnButtonClick()
中有一个值,我需要在
OnFileUploaderChange()
中提供该值

我怎么能这么做?!在调用
OnFileUploaderClick()
函数时,如何获取我在
OnButtonClick()
函数中知道的值,并使其在
OnFileUploaderChange()
函数中可用(传递给)

我已经了解了如何通过将
$(“#文件上传器”).click()
更改为
$(“#文件上传器”).trigger('click',[2])
来将参数传递给
onfileuploader()
函数。但是该参数只能在
OnFileUploaderClick()
中使用,我需要在
OnFileUploaderChange()
中使用它

用户可能会启动上载一个大文件,并且(在仍在上载的情况下)会启动上载另一个较小的文件,以便多个线程同时上载。因此,以任何方式使用globals都不起作用-它必须是一个参数/参数,以避免比赛条件和计时问题

这里有一把小提琴来帮助解释:


使用解决方案编辑:


根据@vincent-d下面的评论和回答(现在标记为正确),我已经修复了我的代码,下面是另一把小提琴,展示了它的工作原理:

问题是,在初始气泡之外创建的任何dom对象和事件都不会被调用,这些事件/函数也不会设置任何参数或全局变量

为了解决这个问题,jQuery提供了一个非常好的函数,负责在这些实时创建的对象上创建一个新的调用

左侧的赋值必须是一个包含未来“实时创建”对象的对象,右侧是一个引用这些对象的选择器

var colors=[‘绿色’、‘黄色’、‘蓝色’];
$('.add')。单击(函数(){
设num=Math.floor(Math.random()*3);
var newHtml='line 1单击设置为'+colors[num]+''
$('table tr').append(newHtml);
});
//单击add,它将设置一个新按钮,由于live event调用,单击该按钮它将传递到此函数
函数colo(colorvar){
$('td').css('color',colorvar);
}
//这是呼叫,注意身体是左手的,点击按钮是右手的
$('body')。在('click','clicker',function()上{
//这是指右侧被单击的元素(可以是子元素,请在事件目标处查看更多信息)
colo($('span',this.text());
});

添加
第1行单击以设置为红色

问题是,在初始气泡之外创建的任何dom对象和事件都不会被调用,这些事件/函数也不会设置任何参数或全局变量

为了解决这个问题,jQuery提供了一个非常好的函数,负责在这些实时创建的对象上创建一个新的调用

左侧的赋值必须是一个包含未来“实时创建”对象的对象,右侧是一个引用这些对象的选择器

var colors=[‘绿色’、‘黄色’、‘蓝色’];
$('.add')。单击(函数(){
设num=Math.floor(Math.random()*3);
var newHtml='line 1单击设置为'+colors[num]+''
$('table tr').append(newHtml);
});
//单击add,它将设置一个新按钮,由于live event调用,单击该按钮它将传递到此函数
函数colo(colorvar){
$('td').css('color',colorvar);
}
//这是呼叫,注意身体是左手的,点击按钮是右手的
$('body')。在('click','clicker',function()上{
//这是指右侧被单击的元素(可以是子元素,请在事件目标处查看更多信息)
colo($('span',this.text());
});

添加
第1行单击以设置为红色

我认为没有办法将参数传递给文件上载更改事件的函数处理程序。正如我在评论中提到的,我认为另一种解决方案是对每一行使用唯一的
,以便更改处理程序引用ID。您可以将上载程序设置为隐藏,并使用标签触发单击:

函数OnFileUploaderChange(inputElem){ output.textContent=inputElem.id; }
input[type=“file”]{
可见性:隐藏;
宽度:0;
}
标签{
背景:#fefefe;
边框:1px纯黑;
填充:0 5px;
}

标题1
标题2
上传
第1排
A.
U
第2排
B
U
第3排
C
U

我认为没有办法将参数传递给文件上载更改事件的函数处理程序。正如我在评论中提到的,我认为另一种解决方案是对每一行使用唯一的
,以便更改处理程序引用ID。您可以将上载程序设置为h