jQuery を使用して作成しているスクリプトで厄介な問題が発生しました。
ホバーすると任意の行にツールバーが表示されるテーブルがあります(見出し行を除く)。これはうまく機能しており、これがそのコードです。
$cont.delegate('tr:not(:eq(0))','mouseover mouseout', function(e){
var $this = $(this);
var pos = $this.position();
if(e.type == 'mouseout') {
$actionToolbar.hide();
} else {
$actionToolbar.css({
'top' : pos.top + $this.height()/2 - $actionToolbar.height()/2,
'left' : pos.left + $this.width() - $actionToolbar.width()
}).show();
}
});
アクション ツールバーにカーソルを合わせると、問題が発生します。行のmouseout
イベントが発生し、ツールバーが非表示になります (その後、表示/非表示の無限ループに入ります)。これは、ツールバーが絶対位置にあり、行の子ではないためです。
契約は次のとおりです。
- 行の子にしたくありません。これは、マウス イベントごとに削除して DOM に追加する必要があるためです。これは、要素の CSS を単純に更新するほど効率的ではありません。
- 可能であれば、これを解決するためにタイマーも避けたいと思います。
前もって感謝します!