2

状況:

ツールチップがページに表示されます。ファンシーボックスを開くとうまくいきます。そのファンシーボックスからajax投稿を行うとうまくいきます。しかし、私のツールチップはその派手なボックスでは機能しません。そして、私のajax投稿の後、それらは機能しません。

fancybox のコールバックで TipTip を再初期化しようとしました。

編集 タイトルの変更だから、最初のホバーではなく、投稿後の2番目のホバーで実行する方法を見つけました。

ここでいくつかの説明も見つけましたが、それでも問題は解決しませんでした。おそらくやり方が間違っています。

編集 2 ファンシーボックスの作業中のトゥーチップは afterShow のみを使用します。

変更点

これを $(function () { に追加して、initTipTip の代わりにこの関数を呼び出すようにしました。

 $(".tooltip").live('mouseover', function () {
    $(this).tipTip();

});

投稿を行い、ファンシーボックスを閉じる関数のコード。

var reservation = MakeReservation();
var oldDateSplit = $("#resDate").val().split('/');
var newDateSplit = $("#dateEditReservation").val().split('/');
var oldDate = new Date(oldDateSplit[2], oldDateSplit[1] - 1, oldDateSplit[0]);
var newDate = new Date(newDateSplit[2], newDateSplit[1] - 1, newDateSplit[0]);
var time = $("#txtTime");
$.ajax({
    url: ResolveUrl('~/Reservation/CheckSettings'),
    data: "JSONString=" + reservation + "&hasJavaScriptMethod=" + true
}).done(function (data) {

    if (data.length == 0 || oldDate.getTime() == newDate.getTime()) {
        $.fancybox.close();
        var id = $("#reservationId").val();


        $("#reservationList").load(ResolveUrl('~/Reservation/reservationList',

関数 () { initTipTip(); })); $("#reservationDetail").load(ResolveUrl('~/Reservation/DetailInfo', function () { initTipTip(); }), { 予約ID: id }); $("#reservationList").on("hover", " .tooltip", function () { $(this).tipTip(); }); } else { $(".errorDiv").removeClass("hidden"); $(".errorDiv").html(データ); $(".btnReservations").removeAttr('disabled'); }

});

NEW $(".tooltip").live('mouseover', function () { $(this).tipTip();

});

}

編集前と変わらず。

TipTip のコードの初期化

function initTipTip () {

   $(".tooltip").tipTip();


}

ファンシーボックスのコード

function openFancy() {

    $("a.inline").fancybox({
        'type': 'ajax',
        'afterShow': function () {
             return initTipTip();
          }
    });

    $("a.inlineBlockedDate").fancybox({
        'type': 'ajax',
        'ajax': { cache: false },
        'afterShow': function () {
            return initTipTip();
        }
    });

}
4

1 に答える 1

2

私はこれに対する解決策を見つけました。

そこで、質問のように.liveを$(function(){で使用しましたが、ここでは「.tooltip」ではなくテーブル自体を使用しました。ここでは、$(this).tipTip();の代わりにinitTipTipも使用します。 TipTipからツールチップを解決します。

説明:これは、tooltip.liveが最初のホバーでのみトリガーされ、テーブルが「更新」されたときにトリガーされないためです。だから今、あなたはテーブルのその更新にそのイベントを追加します私がここで間違っているなら私を訂正してください。

したがって、他の.tiptipやInitTipTipは必要ありません。$(function(){

 $("#reservationList").live('mouseover', function () {
    initTipTip();

});

この質問であなたの問題が解決されることを願っています。

于 2012-06-22T06:32:19.960 に答える