2013-06-24 193 views
-2

我知道這個問題已經被問了很多次,但形式不同。我想在最上面的函數範圍內的其他地方訪問selected變量(alert當前返回未定義)。我知道我需要以某種方式使用return。先謝謝你。JS範圍:訪問變量

$('#people_search_mobile').change(function() { 

    var selected; 

    $('li a', $('#suggestions')).bind('click.autocomplete',function(){ 
    selected = ($(this).text()); 
    }); 

    alert(selected); 

} 

回答

1

Meagar是正確的,但是我發現,有時候它有助於其他地方寫的功能,這樣我保持事件處理程序清潔。

$('#people_search_mobile').change(function() { 

    var selected, myClickHandler; 

    myClickHandler = function(){ 
    selected = ($(this).text()); 
    alert(selected); 
    }; 

    $('li a', $('#suggestions')).bind('click.autocomplete', myClickHandler); 

} 

編輯:或者,如果你想選擇的值傳遞給其他地方的另一個功能......

myClickHandler = function(){ 
    selected = ($(this).text()); 
    showMyAlert(selected); 
    }; 

... 

function showMyAlert(selected){ 
    alert(selected); 
} 
+0

謝謝你們,很有幫助 – keypulsations

4

這沒有任何意義。當alert發生時,li a尚未被點擊。該alert總是顯示undefined,代碼分配一個值selected還沒有運行可能永遠不會運行

如果你想提醒值,則需要在li a實際被點擊的時候可以這樣做:

$('#people_search_mobile').change(function() { 

    var selected; 

    $('li a', $('#suggestions')).bind('click.autocomplete',function(){ 
    selected = ($(this).text()); 
    alert(selected); 
    }); 


} 
+0

確定,但如果我想將這個值傳遞給另一個函數之外」。綁定',那麼最好的方法是什麼? – keypulsations

+0

@PaulOsetinsky將該代碼移到事件處理程序中,我在其中放置了'alert'。 – meagar