2009-03-02 28 views
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

我注意到,你有.submit一個錯字: $( '形式')submti(函數(){

是剛剛輸入錯誤,以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);

讓我知道如果這工作得更好!

+0

是的,我只是在這裏重寫一個小例子。真正的代碼waaay更大:)無論如何,謝謝爲通知 – 2009-03-02 20:03:00

1

我明白你想要做什麼,但你需要存儲新創建的窗口,以便你可以在關閉回調函數中訪問它。您可能想要查看jQuery UI Dialog。它爲對話框窗口(模式和其他)提供了一些非常基本的功能,並處理一些回調實現。

+0

我無法使用UI。我使用jQuery的古董版本,我不能升級,因爲我使用接口(這意味着最大jQuery的1.1.3 :() – 2009-03-02 19:38:52