0

私は dom スクリプト用のロジックをいくつか作成していますが、キーを押したときに複数のメソッドを実行する必要があるという問題を見つけることになります。最後にonkeyup定義されたものが実行されるようです。ここにいくつかのコードがあります:

最初の方法:

...var elements=$$('[id^='+table+']&[id$='+tableField+']');

elements.each(function filter(item) {
    
    //for each item 
    item.onkeyup = function() { ...

2 番目の方法:

...//for each referenced input    
for(var i=0, fields=htmlFieldElems.length;i<fields;i++){

   //set keyup event for involved fiels in the expression
   $(htmlFieldElems[i]).onkeyup = function() {...
        

入力要素が両方のメソッドで同じであり、何かが変更されたときに両方を実行する必要がある場合があります...これに対処する最善の方法は何ですか?

4

2 に答える 2

2

これは私がjQueryを使用して従うものです。これが例です

$('#element').bind('customE',function(){
   // do some stuff
});

$('#element').bind('customE',function(){
   // do some other interesting stuff else use one event handler :-)
});

$('#element').bind('customE',function(){
   // still another
});

$('#element').on('keyup',function(){
    $('#element').trigger('customE');   
});

これが役立つことを願っています..投稿された他の回答でも役立つでしょう..しかし、これは維持するのが簡単です:-)

于 2013-02-16T15:48:38.540 に答える
1

純粋なJavaScriptでは、次のように、onkeyupイベントハンドラーから複数のメソッドを呼び出すことができます...

item.onkeyup = function() {
    func1();
    func2();
    funcn();
}

jQueryなどのフレームワークを使用している場合は、次のようにイベントを追加し続けることができます。

$('#item').keyup(func1);
$('#item').keyup(func2);
$('#item').keyup(funcn);

プロトタイプ:

$('foo').observe('keyup', function(event) {
    func1();
    func2();
    funcn();
});
于 2013-02-16T15:44:36.737 に答える