2013-05-27 91 views
-4

觸發之前發射比方說,我有以下的情況:VAR通過按鈕

<a href="#" id="trigger">CLICK ME</a> 

var x = alert("test"); 
    $('#trigger').click(function() { 
     x 
    }); 

爲什麼x射擊加載頁面,而不是同時按下按鈕?我知道什麼時候將變量放入它的函數中,但我真的不明白爲什麼!

+2

我建議你在MDN上[學習JavaScript](https://developer.mozilla.org/en-US/docs/JavaScript/A_re-introduction_to_JavaScript)來理解哪些功能。 – Ven

+0

真的我不明白爲什麼有人會downvoting,如果這是一個正常的問題!我想我的js,jquery是好的,它只是我需要記住它! – supersize

+0

你的JS不好。你不知道JS,你只想通過剛剛學習jQuery – Ven

回答

3
var x = alert("test"); 

這將執行alert("test"),那麼該表達式的值分配給x。 (alert不返回任何東西,所以x將被設置爲undefined

相反,使用此代碼:

var x = function() { 
    alert("test"); 
} 
$('#trigger').click(function() { 
    x(); //remember to actually call it! 
}); 

這裏有一些更好的方法:

$('#trigger').click(x); //no need to wrap in function if it does not have 
         //any arguments 
$('#trigger').on('click', x); //using on 
+0

或更好的方式來判斷我,'$('#trigger')。得到它了! – Alnitak

+0

感謝您的解釋!不要試圖用我的 – supersize

1

在這一行

var x = alert("test"); 

你實際上調用函數pu將它的返回值寫入變量x中。由於alert()undefined之外沒有任何返回值,因此x中沒有任何真值。

這就是爲什麼下一次你訪問x它仍然是空的,不是包含一個指向函數或類似的東西!

0

因爲alert("test")是一個會顯示警告消息的函數。由於您不在$('#trigger')區域調用此函數,因此與觸發器的點擊功能無關,但只要瀏覽器執行了腳本部分,就會立即執行此功能。

1

var x = alert("test");將立即調用函數alert("test"),然後將返回值分配給x

爲了得到你想要的行爲,你可以用調用一個函數提醒:

var x = function() { 
    alert("test"); 
} 

再到後來調用它,使用括號(參數列表):

$('#trigger').click(function() { 
     x(); 
});