事件绑定——在闭包中捕获变量
Event binding - Capture variable in a closure
我想弄清楚为什么它提醒'二'是否我点击按钮'一'或'二'。
<button id="one"> One </button>
<button id="two"> Two </button>
$(function(){
var some_arg = 'one';
$("#one").click(function(){
my_alert(some_arg);
});
some_arg = 'two';
$("#two").click(function(){
my_alert(some_arg);
});
});
function my_alert(test){
alert(test);
}
谢谢!
<Jsfiddle演示/strong>
因为您似乎想使用一些闭包,所以也可以这样做:
$(function () {
var some_arg = 'one';
(function (some_arg) { // some_arg is local, no more referring to outter scoped one
$("#one").click(function () {
my_alert(some_arg);
});
})(some_arg);
some_arg = 'two';
(function (some_arg) { // some_arg is local, no more referring to outter scoped one
$("#two").click(function () {
my_alert(some_arg);
});
})(some_arg);
});
——演示——
some_arg
设置为'two'后触发点击事件
$(function(){
var some_arg = 'one';
$("#one").click(function(){
my_alert(some_arg);
});
$("#two").click(function(){
some_arg = 'two';
my_alert(some_arg);
});
});
把你的代码改成这个DEMO
$(function(){
var some_arg;//create a variable
$("#one").click(function(){
some_arg = 'one'; // assign 'one' to our variable some_arg to
my_alert(some_arg);
});
$("#two").click(function(){
some_arg = 'two';// assign 'two' to our variable some_arg to
my_alert(some_arg);
});
});
function my_alert(test){
alert(test);
}
来源:闭包
$(function(){
var some_arg;
$("#one").click(function(){
some_arg = 'one';
my_alert(some_arg);
});
$("#two").click(function(){
some_arg = 'two';
my_alert(some_arg);
});
});
相关文章:
- 子类访问父类's闭包变量
- 构造函数函数闭包变量
- 如何冻结函数's在闭包中的变量
- 使变量可用于不带闭包的异步调用
- 局部变量在闭包中丢失
- 其中是闭包中存储的变量-堆栈或堆
- javascript闭包:保护内部变量
- Javascript:附加字符串中的事件,闭包中的变量求值
- "可变变量可从闭包“”访问;在传递给Array.prototype.every的函数中
- JavaScript闭包和变量引用
- 如果全局上下文中的变量是属性,那么为了闭包的目的,如何区分它们
- 如何访问闭包中的变量
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- 使用JavaScript回调函数了解变量作用域和闭包
- 递增并存储一个“;私人的“;使用闭包的变量
- 循环和局部变量内部的闭包
- 未使用JS闭包将变量传递给onClick函数
- 函数变量闭包
- 陷入javascript变量闭包
- 用具体的例子理解Javascript中的私有变量(闭包?)