等到$(item)的调用.click完成jquery

时间:2014-04-03 08:09:24

标签: javascript jquery

我试图在函数调用上覆盖jQuery confirmOn,这是我的代码

    function MYConfirm(questionText, textYes, textNo) {
        var retData = null;
        $('#co').confirmOn({
            questionText: questionText,
            textYes: textYes,
            textNo: textNo
        }, 'click',function (e, confirmed) {
            retData = confirmed;
        });
        $.Deferred($('#co').click());
        $('#co').promise().done(function () {

           alert(retData);
        });
        while (retData === null) {

        }
        return retData;
    }

但我得到了这个例外

  

Object [object Object]没有方法'call'

2 个答案:

答案 0 :(得分:2)

$.Deferred的参数必须是函数。您正在调用click函数而不是将其作为参数传递。它应该是:

$.Deferred($("#co").click);

但我不确定你对这段代码的意图。当$.Deferred调用该函数时,它会设置thisDeferred对象的第一个参数。但是.click()期望它的参数是一个事件处理函数,它作为元素的单击处理程序绑定。如果你没有在某处分配值,那么调用$.Deferred也没什么意义,所以你可以为它添加回调并等待它们被执行。

答案 1 :(得分:0)

从confirmOn中读取documentation,您需要将警告声明放入'点击'回调,即

$('#co').confirmOn({
        questionText: questionText,
        textYes: textYes,
        textNo: textNo
    }, 'click',function (e, confirmed) {
        retData = confirmed;
        alert(retData);
    });

通过绑定$('#co')。click(),您将触发事件,因为元素是单击本身而不是确认。