3

問題があります。onmouseoutイベントに関数を割り当てていますが、イベントを実行した後、それを削除する必要があります。よろしくお願いします。

4

3 に答える 3

9

これはコードによって異なります。d3でこれを行った場合は、次のように言うことができます。

onmouseoutイベント内-関数:

element.on("mouseout",func);

function func(){
    /*do your stuff*/
    element.on("mouseout",null);
}

次のようなイベント属性を介してイベントをバインドした場合は、<div onmouseout="..." >これをリファクタリングする必要があります。この場合、単にd3on()関数を使用してイベントをバインドします。

複数のハンドラーを同じイベントにバインドする場合は、名前空間を使用できます。.nameイベントに追加することで、それらをより具体的にアドレス指定できます。

于 2012-09-21T16:15:20.710 に答える
3

イベントリスナーをd3'on seventで追加したと仮定します。イベントを削除するためのドキュメントは次のとおりです。

選択した要素に同じタイプのイベントリスナーがすでに登録されている場合、新しいリスナーが追加される前に、既存のリスナーが削除されます。同じイベントタイプに複数のリスナーを登録するには、タイプの後に「click.foo」や「click.bar」などのオプションの名前空間を続けることができます。リスナーを削除するには、リスナーとしてnullを渡します。

コードを追加しなかったため、コードを修正できません。

于 2012-09-21T16:10:59.103 に答える
0

別の方法は、jQueryを使用することです。

$(element).bind("mouseout", myFunction);
$(element).unbind("mouseout");

jQuery unbind jQuery bind

次のような最初のパラメータでオプションの名前空間を使用することもできます。

"mouseout.myNamespace"

この名前空間を使用すると、同じ種類の複数のイベントをバインド/アンバインドできます。

おそらくあなたにとって興味深いもう1つのこと: jQuery stopPropagation

于 2012-09-21T16:29:06.830 に答える