- ベストアンサー
【jQuery】カレンダー内のポップアップ表示に関する問題
- jQueryのFullCalendarをカスタマイズしている際に、カレンダー内のポップアップ表示に関する問題が発生しました。
- ポップアップは表示されてはいるものの、ポップアップが出ている状態でカレンダー外の部分をクリックすると再表示されてしまいます。
- 解決方法を探して試行錯誤していますが、うまくいっていません。ご教示頂けると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
いくつか直します。 1、bodyへのイベント設定の動作を変更。 $('body').click(function(e) { $('.tooltiptopicevent').css('top', e.pageY + 10); $('.tooltiptopicevent').css('left', e.pageX + 20); }); ↓これだと、すべてのクリックで要素を表示してしまう。 これをすべてのクリックで非表示にするように変更。 $('body').click(function(e) { $('.tooltiptopicevent').hide(); }); 2、予定がクリックされた場合の動作を変更。 eventClick: function (data, event, view) { $('.tooltiptopicevent').html('イベント名 ' + ': ' + data.title + '</br>' + '詳細 ' + ': ' + [data.description,""][1*(data.description==undefined)]); $('.tooltiptopicevent').show(); }, ↓詳細表示+詳細表示場所の調整&bodyへのイベントバブリングの抑制。 eventClick: function(data, event, view) { $('.tooltiptopicevent').html('イベント名 ' + ': ' + data.title + '</br>' + '詳細 ' + ': ' + [data.description, ""][1 * (data.description == undefined) ]); $('.tooltiptopicevent').css('top', event.pageY + 10); $('.tooltiptopicevent').css('left', event.pageX + 20); $('.tooltiptopicevent').show(); event.stopPropagation(); }, イベントのバブリングを止めることで、bodyに設定した処理が 動かないようにする。
その他の回答 (2)
- s_boshi_cc
- ベストアンサー率50% (4/8)
そうですか…一度ブラウザ側のデバッグで流れを確認していただくほうがいいかもしれないですね。 自分のイメージだと、カレンダー外のクリックでは $('.tooltiptopicevent').hide(); $('#calendar').fullCalendar({ editable: true, のhideを通したいのかなと思っているのですが、もしかしたらクリックされているところがカレンダー内の判定になっているかもです。 その場合はdayClickを通らない判定になってポップアップが表示されているのだと思います。 カレンダー外をクリックした時にポップアップ表示前と表示後で通る処理がどこになるかで見れば原因が分かるかもしれません。
お礼
お礼を見落としており、遅くなってしまいすみませんでした。
- s_boshi_cc
- ベストアンサー率50% (4/8)
ソースを眺めただけの状態での回答になるので 参考になるか微妙ですが、最初の辺りで $('body').click(function(e) { $('.tooltiptopicevent').css('top', e.pageY + 10); $('.tooltiptopicevent').css('left', e.pageX + 20); }); $('.tooltiptopicevent').hide(); の部分で追加した要素を隠す処理をいれていますよね。 ここがうまく動いていない気がします。 最初に何もポップアップが表示されていないときに 枠外を押したときにはちゃんと何も表示されない状態に なっていますか?
お礼
お礼を見落としており、遅くなってしまいすみませんでした。
補足
ご回答ありがとうございます。 ポップアップの表示がないときに、 枠外を押しても何も表示されていません。 私も最初の $('body').click(function(e) { がおかしいのかと思い色々試してはいるのですが、 改善されませんでした。
お礼
おかげさまで、無事に解決できました! 本当に助かりました! ありがとうございました!