私はjquery-pluginqTipを使用しています。私のページのすべてのツールチップを破棄するコマンドは何ですか?
私は試した:
$('.option img[title], span.taxonomy-image-link-alter img[title]').qtip("destroy");
しかし、それはうまくいきませんでした...ありがとう
$(".qtip").remove();
で解決しました
qTip2はこのスクリプトの新しいバージョンですが、1つだけ指摘したいと思います。
$(".qtip").remove();
このコードはすべてのツールチップを破壊するわけではなく、単にコンテナを削除しただけです。ツールチップを呼び出したオブジェクトにアタッチされたすべてのハンドラーとイベントは、ブラウザーのメモリーで引き続き使用できます。
QTipでツールチップとそのハンドラーを完全に削除するには、次のものを使用する必要があります。
$(mytooltip).qtip("destroy");
または
$(mytooltip).qtip('api').destroy();
ただし、qTip2ではこれを使用します。
$(mytooltip).remove();
自動的にAPIを呼び出し、ツールチップとそのハンドラーを完全に破棄します。
$('.qtip').each(function(){
$(this).data('qtip').destroy();
})
qtip("destroy")
はバグがあり(バージョン2.1.1)、すべてをクリアするわけではありません。
私はこれを適切な回避策として見つけました:
// don't call destroy if not needed
if (element.data("qtip")) {
// the 'true' makes the difference
element.qtip("destroy",true);
// extra cleanup
element.removeData("hasqtip");
element.removeAttr("data-hasqtip");
}
バギーに見えます。運が良かったのですが、元のタイトルには戻りません。 destroy
もそうしないと思います...
$('span.taxonomy-image-link-alter img')
.filter(function(){return $(this).data('qtip');})
.qtip('destroy');
QTipなしで要素に対してdestroy
を呼び出すことはできないようです-サイレントに失敗することはありませんが、例外をスローしてループを停止します。
私はそのapi-callを経験しました
$(selector).qtip('destroy')
特に複数のqtipを同時に使用する場合は、すべてのqtip-dataを確実に削除するわけではありません。
私の場合、visible qtipを削除し、この回避策を正常に使用する必要がありました。
$(selector).removeData('qtip');
$('.qtip :visible').remove();
これらの答えはどれも私を助けませんでした。
私の場合、閉じるボタンのある要素にqtipがありました。閉じるボタンで要素が削除されたため、要素が削除された後にqtipを削除するための参照ポイントがありませんでした。
$('.qtip:visible').remove()
が機能すると思いましたが、どういうわけか、ページ上のすべてのqtipが削除され、削除したい1つのqtipは削除されませんでした。
目に見えるqtipにクラス_qtip-active
_が与えられていることに気づいたので、私にとってうまくいったのは次のとおりです。
$('.qtip-active').remove();
どうですか:
$('[data-hasqtip]').qtip('destroy', true);
qTip2
バージョン3.0.2
で動作しているようです。
少し遅れるかもしれませんが、ajax呼び出しがページのコンテンツを置き換え、ターゲットのqtip2オブジェクトを破棄する前に削除すると、メモリとページの読み込みに問題が発生したため、ターゲットがなくなっても一部の要素が残ります。
すべてのqtips2要素とデータをクリーンアップしたい場合があるという事実に基づいて、元のオブジェクトが存在するかどうかに関係なく、一部のツールチップ要素が本体に残っているため、元のターゲットがなくなったときに破棄を呼び出す簡単な方法はありません() 方法。
あなたがそれをしない限り、ターゲットの代わりに作成されたオブジェクトを検索します。
jQuery('div[id^="qtip-"]').each(function(){ //search for remaining objects
_qtip2 = jQuery(this).data("qtip"); //access the data where destroy() exist.
//if it's a proper qtip2 object then call the destroy method.
if(_qtip2 != undefined){
// the "true" is for immediate destroy
_qtip2.destroy(true);
}
//if everything went right the data and the remaining objects in the body must be gone.
});
競合の問題がないためにJQueryを使用しましたが、JQueryの代わりに「$」(記号)を使用できます
if ( jQuery( '.qtip' ).length > 0 )
{
jQuery( "#IdElement").qtip("destroy");
}