私のカレンダーで行ごとに複数のイベントを表示するためにfullcalendarをハックしようとしています。ですから、私はこの行を繰り返して内容を再構成したいと思っています。しかし、jQueryはこれらの行をfind()
できません。jQueryが追加された要素を見つけません
<div class="fc-content-skeleton">
<table>
<thead>
<tr>
<td class="fc-day-number fc-mon fc-past" data-date="2016-09-26">26</td>
<td class="fc-day-number fc-tue fc-past" data-date="2016-09-27">27</td>
<td class="fc-day-number fc-wed fc-past" data-date="2016-09-28">28</td>
<td class="fc-day-number fc-thu fc-past" data-date="2016-09-29">29</td>
<td class="fc-day-number fc-fri fc-today fc-state-highlight" data-date="2016-09-30">30</td>
<td class="fc-day-number fc-sat fc-other-month fc-future" data-date="2016-10-01">1</td>
<td class="fc-day-number fc-sun fc-other-month fc-future" data-date="2016-10-02">2</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2"></td>
<td class="fc-event-container" rowspan="2">
<a class="fc-day-grid-event fc-h-event fc-event fc-start fc-end event-free" data-url=""></a>
</td>
<td rowspan="2"></td>
<td class="fc-event-container">
<a class="fc-day-grid-event fc-h-event fc-event fc-start fc-end event-mine" data-url=""></a>
</td>
<td class="fc-event-container">
<a class="fc-day-grid-event fc-h-event fc-event fc-start fc-end event-free" data-url=""></a>
</td>
<td rowspan="2"></td>
<td rowspan="2"></td>
</tr>
<tr>
<td class="fc-event-container">
<a class="fc-day-grid-event fc-h-event fc-event fc-start fc-end event-taken" data-url=""></a>
</td>
<td class="fc-event-container">
<a class="fc-day-grid-event fc-h-event fc-event fc-start fc-end event-free" data-url=""></a>
</td>
</tr>
</tbody>
</table>
</div>
私は.fc-content-skeleton
下table
タグを取得することができています。しかし、私が 'find( "table")children()'と呼び出すと、返すのはthead
だが、私が必要とするのはtbody
ではない。私は、すべての出来事が取り出されて追加された後にそれをやっています。
EDIT
次のように関数が呼び出されます。
$(document).on("ready turbolinks:load", function(){
//.....
$("#calendar").fullCalendar(calendarOpt);
$("#calendar").reorganizeEvents();
//.....
}):
機能自体:
(function($) {
$.fn.reorganizeEvents = function(){
if(reorgHandler == false){
$(this).fullCalendar('render');
var $dayContainers = $(this).find(".fc-row .fc-content-skeleton table")
.children(); //obtaining children of the table in .fc-skeleton.
// Supposed to be <thead> and <tbody>
console.log($dayContainers); //successfully finds table
$dayContainers.each(function(index){
console.log($(this)); //shows only <thead> as a single child
});
reorgHandler = true;
}
}
}(jQuery));
このJavaScriptコードはどこで呼び出されていますか?私のクリスタルボールは、要素が存在する前に要素にアクセスしようとしているということです。 – epascarello
@epascarelloこれまた、存在する前の変数値で作業している可能性があります。 'find()...'がいつ書き出されるかによって異なります。 – krillgar
@epascarello fullcalendarが 'document.ready'関数でインスタンス化された後、' $( "#calendar") 'でそれを呼び出しています。 – mityakoval