2011-08-03 86 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

在這個例子中,在$(文件)以外的VAR .bind( 'reveal.facebox',函數() {})將是正確的設計。此鏈接可以幫助:

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。