プロトタイプ js を使用して、次のようなイベントをバインドしています。
$('country').observe('change',function(e) { ... });
すぐに1回発射するにはどうすればよいですか?
jQuery では、.triggerHandler('change')
. プロトタイプに似たようなものはありますか?
プロトタイプ js を使用して、次のようなイベントをバインドしています。
$('country').observe('change',function(e) { ... });
すぐに1回発射するにはどうすればよいですか?
jQuery では、.triggerHandler('change')
. プロトタイプに似たようなものはありますか?
拡張機能を使用することがオプションである場合、私は過去にこの目的のためにevent.simulateで成功しました。
それはあなたが次のようなことをすることを可能にするでしょう:
$('country').simulate('change');
これを試して:
var handler = function(e) {...};
$("country").observe("change",handler);
handler();
別の方法(読みにくい、一時変数を避ける):
$("country").observe("change",(function(e) { ... return arguments.callee;})());
ただし、どちらの場合も、期待どおりに使用することはできthis
ません。このソリューションは、次のようなより一般的なコールバックに適していますsetInterval
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()
れると、実行されます。私はいつもこのテクニックを使っています。
...それが存在することがわかっていて、ページの読み込みやスクリプトの読み込みを待っていないことがわかっている場合は、次のようにしてください。
(function (el) {
if (!el) { return; }
doSomething(el);
}(document.getElementById("country")));