可能是由于失眠引起的,但是我一直无法使以下简单的JS函数正常工作。

function numFunction() {
    var retNum = null;
    $('.draggable').draggable($state).on("drag", function (event, ui) {
        retNum = 31;
    });
    return retNum;
}

var finNum = numFunction();


就像这样简单:


我们首先创建一个名称为numFunction的函数。
定义了变量retNum。变量由于jQuery UI拖动事件触发的事件而改变了它的值(效果很好)。
返回retNum
最后但并非最不重要的一点是,使用函数的(假定)新值finNum定义新变量31
故事结局。


不幸的是,它不起作用。 console.log(finNum)仅返回null。我要把头撞在墙上:我不知道我在想什么。

最佳答案

您仅在可拖动事件处理程序上更改retNum的值,该事件处理程序仅在触发事件后才执行。

但是,除非触发该事件,否则它不会发生。

当您调用函数时,处理程序可能尚未触发,因此retNum仍为null

这样做:

function numFunction() {
    var retNum = null;
    $('.draggable').draggable($state).on("drag", function (event, ui) {
        retNum = 31;
    }).trigger('drag');<- trigger it immediately to set the value of retNum to 13
    return retNum;
}

07-24 18:16