Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 在事件中传递数据-dos和don';ts_Javascript_Jquery_Events - Fatal编程技术网

Javascript 在事件中传递数据-dos和don';ts

Javascript 在事件中传递数据-dos和don';ts,javascript,jquery,events,Javascript,Jquery,Events,我对在事件中传递数据有点困惑。我得到了不一致的结果,我想了解为什么$(this).val()不能通过,但如果我事先声明它会通过。我理解为什么最后一个方法有效,但不理解为什么它返回nothing/undefined。有人能帮我澄清一下吗 编辑:对象的obj是 这些表达式的问题 obj.on('click',{val:this.value},tellmeagain); //undefined obj.on('click',{val:$(this).val()},tellmeagain); //ret

我对在事件中传递数据有点困惑。我得到了不一致的结果,我想了解为什么
$(this).val()
不能通过,但如果我事先声明它会通过。我理解为什么最后一个方法有效,但不理解为什么它返回nothing/undefined。有人能帮我澄清一下吗

编辑:对象的
obj


这些表达式的问题

obj.on('click',{val:this.value},tellmeagain); //undefined
obj.on('click',{val:$(this).val()},tellmeagain); //returns nothing
是在绑定时计算
this.value
$(this.val()
,而不是在事件发生时。不仅值没有更改,而且
甚至不是您的元素(如果您的代码位于全局范围内或
$.ready
回调中,则它可能是
窗口

更清楚地说,这一行

obj.on('click',{val:this.value},tellmeagain); //undefined
相当于

var rhfle = {val:this.value}; // what do you think is this ? it's window
obj.on('click',rhfle,tellmeagain); 

只是因为值来自“obj”而不是“this”


你能详细说明一下吗?为什么
$(this)|
不是我的元素?它使用第1个函数报告值。因为在您编写
{val:this.value}
的范围内,
this
没有理由成为您的元素。它是什么,我们无法从您显示的代码中分辨出来。啊,检查一下我在OP中包含的小提琴。它是一个输入。@kcdwayne在小提琴中,
这个
,在最外部可见的范围内,不是一个输入。它是
窗口
。传递
数据
对象并不常见,因为通常很容易从回调或使用闭包获得所需内容。
var rhfle = {val:this.value}; // what do you think is this ? it's window
obj.on('click',rhfle,tellmeagain); 
value = obj.val()

this.value  ?????