3

後続のさまざまなイベントを処理するために、DOM要素に焦点を合わせたオブジェクトを作成しています。ただし、要素がフォーカスを失った後、オブジェクトを何らかの方法で破棄する必要があります。これにより、要素に将来フォーカスすると、元のオブジェクトを参照せずに新しいオブジェクトが作成されます。

現在、私が抱えているこの問題は、後続のクリックで別のオブジェクトが作成され、すべての関数が2回呼び出されることです。もう一度3回クリックします。以下のコードは、クリックイベントとオブジェクトの作成の例を示しています。

どんな助けでもいただければ幸いです。

    var videoTopicsHandler = DojoOn(videoTopicsInput, 'focus', function(e){ 
        dropKeyPress(this, 'video-topics');
    });
    var dropKeyPress = function(input, ulId, scroll) {
        var handler;

        obj = new dropDownObj(ulId, scroll); 
        obj.attachEvents(obj, handler, input);
    };
4

2 に答える 2

0

これを試して:

var obj = null;
var dropKeyPress = function(input, ulId, scroll) {
        var handler;
        if(obj !== null) obj.destroyRecursively();
        obj = new dropDownObj(ulId, scroll); 
        obj.attachEvents(obj, handler, input);
    };
于 2012-06-26T03:51:30.383 に答える
0

削除する代わりに、作成したオブジェクトをキャッシュし、要素がフォーカスを取り戻したときに既にそこにある場合はキャッシュから取得することができます。長所: 高速で、再フォーカスのたびにオブジェクトを再生成して破棄する必要がありません。短所:未使用のオブジェクトはメモリを消費しますが、次のページに十分速く移動する場合、またはそれらのオブジェクトの数が少なく、再フォーカスが頻繁に発生するため、とにかくそれらが必要になる場合、これは無関係になる可能性があります.

于 2012-07-09T14:56:55.557 に答える