0

我在使用 JS/jQuery 编写一小段代码时遇到了一个大问题(不知道是哪一个导致了问题)。无论如何,我们开始:

$('#themePicker').unbind().click(function() {
    var t = $(this);    
    modalwindow2(t, function() {
        console.log(1);
    }, function(w) {
        console.log(w);
    });

    return false;
});

和函数本身:

function modalwindow2(w, callbackOnSHow, callbackOnHide) {
    if (typeof(callbackOnSHow) == 'function') {
        callbackOnSHow.call();
    }

    // do some stuff //
    $('form').submit(function() {
        ajaxSubmit(function(data) {
            if (typeof(callbackOnHide) == 'function') {
                console.log('---------------');
                console.log(data);
                console.log('---------------');
                callbackOnHide.call(data);
            }
        });

        return false
    });
}

该函数被调用modalwindow2,我想在显示模态时调用一个函数,在隐藏模态时调用另一个函数。

第一个不是问题。

第二个......嗯......我们只是说这是一个问题。为什么?

我想要一个参数发送到第二个函数。参数是一个 ajax 响应,类似于其他 jQuery 东西(ajax 操作、可排序等)。

我希望我说得够清楚。

谢谢!

编辑:

我正在使用 jQuery 1.1.2(或 1.1.3)并且升级或使用 jQuery UI 不是解决方案。我有一些依赖项(界面就是其中之一),我没有足够的时间(也没有动力)升级到 1.3 和 UI 1.7。

4

2 回答 2

1

我了解您要做什么,但是您需要存储新创建的窗口,以便您可以在关闭回调函数中访问它。

您可能想查看jQuery UI Dialog。它为对话框窗口(模态和其他)提供了一些非常基本的功能,并处理一些回调实现。

于 2009-03-02T19:35:45.467 回答
1

我注意到您在 .submit 上有一个错字: $('form').submti(function(){

这只是 SO 的输入错误吗?

编辑:好的,所以在查看您的代码并进行简短测试之后,我想出了这个(请原谅双关语):

function modalwindow2(w, callbackOnShow, callbackOnHide) {
    if(typeof callbackOnShow == 'function') {
        callbackOnShow.call();
    }
    $('form').submit(function() {
        if(typeof callbackOnHide == 'function') {
            callbackOnHide.call(this, "second");
        }
    });
}

$(document).ready(function (){
    $('#themePicker').click(function(){
        var t=$(this);
        modalwindow2(t, function() { alert("first"); }, function(x) { alert(x); });
        return false;
    });
});

看起来您可能只是在 call() 语句中丢失了“this”。尝试使用 callbackOnHide.call(this, data);

让我知道这是否更好!

于 2009-03-02T19:58:15.740 回答