1

Primefacesスケジュールコンポーネントを使用して、Webアプリでイベントをレンダリングしています。しかし、私は彼と少しトリックをする必要があります。レンダリングされたイベントごとに、イベントの詳細を含むツールチップを表示する必要があります。window.onloadリスナーと一部のjquery関数を使用すると、現在の日付フレームのツールチップを簡単に表示できます。ただし、スケジュールではajaxを使用して、[次へ]ボタンと[前へ]ボタンを押すと次の日付フレームが表示されるため、ツールチップがクラッシュします。私は使用してみました:

window.addEventListener('DOMSubtreeModified', function(){
    // create bubble popups
    $('.fc-event-inner.fc-event-skin').CreateBubblePopup( options );
}, false);

しかし、処理が多すぎてページが遅くなるようです。レンダリングされた各イベントにツールチップを追加する他の方法はありますか?

4

1 に答える 1

3

このようにしてみてください:

$(window).load(function() {
   $(document).delegate(".fc-event-inner", "mouseenter mouseover", function(event){
       $('.fc-event-inner.fc-event-skin').CreateBubblePopup( options );

   });
});

アップデート

スケジューラーのjsファイルのどこかで彼らがやっているような気がしstopPropagation()ましたmouseover...

primefaces-3.4.1-sources \ META-INF \ resources \ primefaces\scheduleにあるjsファイルの次のコードを見てください。

/* Event Element Binding
-----------------------------------------------------------------------------*/


function lazySegBind(container, segs, bindHandlers) {
    container.unbind('mouseover').mouseover(function(ev) {
        var parent=ev.target, e,
            i, seg;
        while (parent != this) {
            e = parent;
            parent = parent.parentNode;
        }
        if ((i = e._fci) !== undefined) {
            e._fci = undefined;
            seg = segs[i];
            bindHandlers(seg.event, seg.element, seg);
            $(ev.target).trigger(ev);
        }
        ev.stopPropagation();
    });
}

それで...

削除してみてくださいev.stopPropagation();

ちなみに、スケジューラーは実際にはFullCalendar jQueryプラグインであるため、 fullcalendarツールチップをグーグルで検索すると役立つ情報が見つかる可能性があります。

変更されたPrimefacess3.4​​jarのリンクは次のとおりです(stopPropagationスケジューラーイベントの場合はありません)

于 2012-10-04T21:08:43.770 に答える