2009-03-02 10 views
0

JS/jQueryを使用して小さなコードを書くのに大きな問題があります(これらのどれが問題を引き起こしているのかわかりません)。どのようにコールバック関数

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

    return false; 
}); 

と機能自体::とにかく、ここで私達は行く機能がmodalwindow2と呼ばれ

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 
    }); 
} 

をし、モーダルが示されているとき、私は、関数を呼び出したいと別の機能は、モーダルになりますとき隠された

最初は問題ありません。

第2回...まあ...ちょうどそれが問題だと言いましょう。どうして?

2番目の関数にパラメータを送信します。パラメータは、他のjQueryのもの(Ajaxアクション、ソート可能なものなど)と同様のajaxレスポンスです。

私は自分自身を十分に明確にしたいと思う。

ありがとうございます!

編集:

私はjQueryの1.1.2(または1.1.3)とアップグレードを使用するか、jQueryのUIを使用していますが解決策ではありません。私はいくつかの依存関係を持っています(インターフェイスはその1つです)。私は1.3 & UI 1.7にアップグレードするのに十分な時間(動機)もありません。

答えて

1

私はあなたが.submitにタイプミスがあることに気づいた:。 $( 'フォーム')をsubmti(関数(){

はSO

編集することだけ入力エラーましたか?: あなたのコードを見て、短いテストを行った後、私はこの(しゃれを許し)を作ってみたので、[OK]を、:

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; 
    }); 
}); 

あなたはJを有していても良いように見えますあなたのcall()ステートメントに "this"がありませんでした。 callbackOnHide.call(this、data)を使用してみてください。

これがうまくいくかどうか教えてください。

+0

ええ、私はちょうどここに小さな例を書き直しています。通知のために –

1

私はあなたがしようとしていることを理解していますが、クローズコールバック関数でアクセスできるように新しく作成したウィンドウを保存する必要があります。

jQuery UI Dialogをご覧ください。ダイアログウィンドウ(モーダルなど)のための基本的な機能をいくつか提供し、コールバック実装の一部を処理します。

+0

私はUIを使用できません。私はjqueryのアンティークバージョンを使用しています。私はインターフェイスを使用してアップグレードできません(最大jquery 1.1.3 :()を意味します) –

関連する問題