2011-08-03 9 views
0

javascriptで「リスナー」内のいくつかの変数にアクセスする必要があります(Facebox)。 JavaScript関数とイベントリスナー間で変数を伝達するにはどうすればよいですか?JavaScriptでイベントリスナ内の変数にアクセスするには

私はスコープでちょっと混乱していますが、グローバル変数を宣言するのはちょっと面倒です(特にモーダル内での結果のページ付けなど)グローバル変数と同様に

これは私の問題を引き起こしている部分である。

function song_clarify() 
{  
    // this launches a modal window, fills with html. 
    $.facebox('<div id="search"><div></div></div>');   
} 

// AJAX function. when called, this loads the required htmls into the modal 
function clarify_loader() 
{ 
    var loadUrl = "ajax/clarify"; 

    $("#search > div") 
     .html(ajax_load) 
     .load(loadUrl, 'search='+source+'&searchTerm='+song); 
} 

// Waits for the modal to be revealed before calling AJAX function. 
// (if function called outside listener, nothing for the AJAX to bind to as modal appears dynamically) 
$(document).bind('reveal.facebox', function() { 

    // Problem is here. Need to be able to do clarify_loader(source,song) 
    clarify_loader(); 

}) 
+0

ソースと曲はどこから来たのですか?歌と検索を入力したユーザーであれば、htmlから取り出すことができます – ika

答えて

1

あなたが使用している例では、$(文書).bind(「reveal.facebox」、関数(の外VAR) {})が正しいデザインになります。このリンクは役立つかもしれない:

http://api.jquery.com/bind/

ゴーあなたがソースと歌の変数が宣言される場所から提供されていませんでしたまあ

0

を「イベントデータの受け渡し」と呼ばれるセクションに。彼らがユーザーによって入力された入力から来ている場合、私はあなたが問題がないと信じています。あなたはclarify_loader内の値を代入している場合は、単にグローバル変数

var var1, var2; 

function a(){ 
    var1 = "x" 
    var2 = "y" 
} 

function b(){ 
    alert(var1) //x 
    alert(var2) //y 
} 

を使用して、それぞれの関数AおよびBを呼び出すときに、あなたの変数が値xとyを持つことになります。

関連する問題