我結合像這樣的事件,使用原型JS:如何立即觸發事件?
$('country').observe('change',function(e) { ... });
怎麼能有一次我立刻火了?
jQuery中,我只是釘在一個.triggerHandler('change')
。原型中有類似的東西嗎?
我結合像這樣的事件,使用原型JS:如何立即觸發事件?
$('country').observe('change',function(e) { ... });
怎麼能有一次我立刻火了?
jQuery中,我只是釘在一個.triggerHandler('change')
。原型中有類似的東西嗎?
使用load
事件。事情是這樣的:
// calls addListeners when the document loads
Event.observe(window, 'load', addListeners, false);
function addListeners() {
// called onLoad
fireOnce();
// observer for the country dropdown
$('country').observe('change', function(event) {
fireOnChange();
});
}
function fireOnce() {
// do something
}
function fireOnChange() {
// do something
}
當文檔載入,fireOnce()
將執行。我一直都在使用這種技術。
我希望我可以發射匿名函數....這有點矯枉過正。 – mpen 2012-08-05 18:51:25
試試這個:
var handler = function(e) {...};
$("country").observe("change",handler);
handler();
或者(少可讀,避免臨時變量):
$("country").observe("change",(function(e) { ... return arguments.callee;})());
然而,在這兩種情況下,你將無法使用this
正如您所料。此解決方案更適合於更普遍的回調,如setInterval
我目前正在使用前一種方法...'arguments.callee'已被棄用,不是嗎? – mpen 2012-08-06 00:40:49
...如果您知道它存在,並且您知道您並未等待頁面加載或等待腳本加載,爲什麼不只是:
(function (el) {
if (!el) { return; }
doSomething(el);
}(document.getElementById("country")));
你的意思做,立馬?只要頁面加載? – 2012-08-05 18:37:34
@NoahPassalacqua:沒有。立即立即。如在該行的代碼被擊中時。它在HTML元素下面,所以我知道它已經存在。 – mpen 2012-08-05 18:44:37