0

プロトタイプ js を使用して、次のようなイベントをバインドしています。

$('country').observe('change',function(e) { ... });

すぐに1回発射するにはどうすればよいですか?

jQuery では、.triggerHandler('change'). プロトタイプに似たようなものはありますか?

4

4 に答える 4

1

拡張機能を使用することがオプションである場合、私は過去にこの目的のためにevent.simulateで成功しました。

それはあなたが次のようなことをすることを可能にするでしょう:

$('country').simulate('change');
于 2012-08-05T19:33:14.883 に答える
1

これを試して:

var handler = function(e) {...};
$("country").observe("change",handler);
handler();

別の方法(読みにくい、一時変数を避ける):

$("country").observe("change",(function(e) { ... return arguments.callee;})());

ただし、どちらの場合も、期待どおりに使用することはできthisません。このソリューションは、次のようなより一般的なコールバックに適していますsetInterval

于 2012-08-05T19:34:44.323 に答える
1

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()れると、実行されます。私はいつもこのテクニックを使っています。

于 2012-08-05T18:41:58.973 に答える
0

...それが存在することがわかっていて、ページの読み込みやスクリプトの読み込みを待っていないことがわかっている場合は、次のようにしてください。

(function (el) {
    if (!el) { return; }
    doSomething(el);
}(document.getElementById("country")));
于 2012-08-05T19:36:46.250 に答える