0

qTip 2 とのやり取りで少し厄介な問題が発生しています。私のページのボタンには、遅延mouseover後に表示され、すぐに消えるように設定されたヒントが添付されています。500msmouseout

ボタンをクリックすると、ビュー全体が変化し、その特定のボタンが消えるため、ヒントをすぐに非表示にします (そうしないと、ヒントをトリガーしたボタンが表示されなくなっても、ユーザーがマウスを移動するまで残ります)。

問題は、遅延イベントが最初に発生した場合、即時hideイベントが遅延イベントをキャンセルしていないように見えることです。show言い換えると、ユーザーがボタンをポイントして 未満でクリックすると500msイベントhideがトリガーされ (何もしない) 、イベントが でトリガーされ、ボタンがもう存在しない場合でもツールチップが表示されます (そして間違った場所にこれは、ボタンが表示されていないと正しく配置できないためです)。show500ms

イベントをトリガーして、hideそこで停止し、他のイベントを実行しないように指示する方法はありますか?

4

2 に答える 2

1

未検証

showイベントを使用して、ボタンが表示されているかどうかを確認できます。表示されていない場合は、表示されません。

このようなもの:

 events: {
       show: function(event, api) {
           var target = event.originalEvent.target;
           if($("#idOfButton").length === 0 ) {
              event.preventDefault();
              //or try this (commednt the above and uncomment the code below)
              //clearTimeout(api.timers.custom);  
           }
       }
}
于 2012-11-30T17:27:48.903 に答える
0

私はこのように解決しました(@Daniel、あなたの答えは近かったので、私もあなたに賛成します):

events: {
    show: function(event, api) {
        if ($("#mybutton").is(':hidden')) {
            try { event.preventDefault(); } catch(e) {}
        }
    }
};

これは、qTipのドキュメントで推奨されている方法です。

于 2012-12-03T21:57:44.913 に答える