觸發之前發射比方說,我有以下的情況:VAR通過按鈕
<a href="#" id="trigger">CLICK ME</a>
和
var x = alert("test");
$('#trigger').click(function() {
x
});
爲什麼x
射擊加載頁面,而不是同時按下按鈕?我知道什麼時候將變量放入它的函數中,但我真的不明白爲什麼!
觸發之前發射比方說,我有以下的情況:VAR通過按鈕
<a href="#" id="trigger">CLICK ME</a>
和
var x = alert("test");
$('#trigger').click(function() {
x
});
爲什麼x
射擊加載頁面,而不是同時按下按鈕?我知道什麼時候將變量放入它的函數中,但我真的不明白爲什麼!
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
在這一行
var x = alert("test");
你實際上調用函數pu將它的返回值寫入變量x中。由於alert()
除undefined
之外沒有任何返回值,因此x
中沒有任何真值。
這就是爲什麼下一次你訪問x
它仍然是空的,不是包含一個指向函數或類似的東西!
因爲alert("test")
是一個會顯示警告消息的函數。由於您不在$('#trigger')
區域調用此函數,因此與觸發器的點擊功能無關,但只要瀏覽器執行了腳本部分,就會立即執行此功能。
var x = alert("test");
將立即調用函數alert("test")
,然後將返回值分配給x
。
爲了得到你想要的行爲,你可以用調用一個函數提醒:
var x = function() {
alert("test");
}
再到後來調用它,使用括號(參數列表):
$('#trigger').click(function() {
x();
});
我建議你在MDN上[學習JavaScript](https://developer.mozilla.org/en-US/docs/JavaScript/A_re-introduction_to_JavaScript)來理解哪些功能。 – Ven
真的我不明白爲什麼有人會downvoting,如果這是一個正常的問題!我想我的js,jquery是好的,它只是我需要記住它! – supersize
你的JS不好。你不知道JS,你只想通過剛剛學習jQuery – Ven