Tim*_*Tim 0 javascript jquery javascript-events
我很难搞清楚如何将变量重新分配给新函数.
我有两个分配给变量的匿名函数,我希望"first"在调用一次后将其自身分配给"after".
在Firefox中使用.toSource时,似乎首先要重新分配,但是"单击处理程序中的第一个仍然是引用或调用在运行时创建的第一个.
为什么是这样?
JS
var after = function() {
    alert("AFTER");
}
var first = function() {
    alert("FIRST");
    //alert(first.toSource());
    first = after;
}
$(".order").click( first );
HTML
<button type="button" class="order">Order</button>
当你打这个电话时:
$(".order").click( first );
您正在使用first 此次通话时的值.它当时的值是传递给click()函数的值.
first稍后更改变量的值不会影响这一点.
另一种看待它的click()方法:考虑jQuery 方法中的代码.它不知道您first在通话中使用了变量.它拥有的唯一信息是first在通话时引用的功能.
请参阅@ tymeJV的答案,了解如何做你想做的事.注意它的不同之处:你传入的函数.click()(匿名函数)不必改变.当该函数调用时first(),它始终使用该名称的当前值.
关注@MichaelGeary的回答,如果你想通过这样的引用来使函数工作,那么把你的函数调用放在一个匿名函数中:
$(".order").click( function() {
    first();    
});
演示:http://jsfiddle.net/E2R2R/4/