命名匿名函数会破坏我的代码

时间:2014-01-03 16:55:17

标签: javascript jquery-ui

I asked a similar question over a year ago。 但我无法弄清楚这一点。

这有效:

$('#PlayArea').droppable({
    drop: function( myEvent, myUI ) {
        debugger;
    }
});

但这不是:

function myDroppable() {
    this.drop = function( myEvent, myUI ) {
        debugger;
    }
};
$('#PlayArea').droppable(myDroppable);

3 个答案:

答案 0 :(得分:2)

droppable采用对象字面值,而不是函数。这两个片段并不相同,你实际上做的是这样的事情(通过这种方式更容易看出它是错误的):

$('#PlayArea').droppable(function myDroppable() {
    this.drop = function( myEvent, myUI ) {
        debugger;
    }
});

如果要使用命名函数,请使其返回droppable接受的配置对象。

答案 1 :(得分:2)

你需要使用,因为droppable获取一个对象文字,因此返回它。

function myDroppable() {
    return {
        drop: function (myEvent, myUI) {
            debugger;
        }
    }
};
$('#PlayArea').droppable(myDroppable());

或者

var myDroppable = {
    drop: function (myEvent, myUI) {
        debugger;
    }
};
$('#PlayArea').droppable(myDroppable);

答案 2 :(得分:0)

myDroppable = {};
myDroppable.drop = function( myEvent, myUI ) {
   debugger;
}
myDroppable.tolerance = 'pointer';
myDroppable.hoverClass = 'ui-state-highlight';
$('#PlayArea').droppable(myDroppable);

这样您就不会使用冒号作为赋值运算符。