2017-03-21 7 views
1

私はaddClassを別の土曜日に試しています。私は2つの方法を試しましたが、どれも正しく動作しません。datepickerでの代替日

#1
私はすべてのすべてのtr:oddを追加しました。 Demo Fiddle

$('.ui-datepicker-calendar tr:odd').each(function(){ 
    $(this).addClass('odd'); 
}); 

しかし、4月の蛾が月を終了し、開始表示された場合は、奇妙な状態ではありません。

#2
私はフィドルのどこかで奇妙なハックを受けました。 Demo Fiddle

$('td.ui-datepicker-week-end .ui-state-default').each(function(i, el) { 
    if (i % 2 === 0) { 
    $(this).addClass('sat'); 
    } 
    else { 
    $(this).addClass('sun');     
    } 
}); 

$('.sat').each(function(i, el) { 
    if (i % 2 === 0) { 
    $(this).addClass('work-sat'); 
    } 
    else { 
    $(this).addClass('non-sat');  
    } 
}); 

これは正常に動作していますが、次、前のボタンで、いくつかの次の前月を変更した場合。自動的には奇数になり、逆も奇数になります。また、数ヶ月後に自動的に変更され、自動的に変更されます。
なぜそれが起こるのか分かりませんか?

答えて

2

これを行うための最も安全な方法は、表のセルから年、月と日付を読んで、その後、私は別の土曜日はちょうど私= 0にするマークされた場合は当日

$('.ui-datepicker td .ui-state-default').each(function(i, el) { 
    var month = $(el).parent().attr('data-month'); 
    var year = $(el).parent().attr('data-year'); 
    var day = $(el).text(); 
    var date = new Date(year, month, day); 

    if (date.getDay() == 6) { 

     i += 1; 
     if (i % 2 == 0) { 
     $(el).addClass('work-sat'); 
     } else { 
     $(el).addClass('non-sat'); 
     } 
    } 
}); 

をチェックすることです。 onChangeMonthYear関数が呼び出されたときに呼び出されます。

タイムアウトを1に設定して、マーキングが即時に実行されるようにすることもできます。

ここは完全なフィドルですhttps://jsfiddle.net/jajoevjy/8/

+0

こんにちはリヴィウ、あなたの答えをありがとう。 '$(el).parent()。attr( 'data-month')月と年のデータ属性はローカルの同じコードでは見えず、同じバージョンが実装されています。しかし、フィドルデータでは、attrが見えます。なぜなのかご存知ですか? – locateganesh

+0

あなたがそれを検査したり、jqueryを使って値を取得しなかった場合、あなたは要素にまったく持っていませんか? –

+0

私は理由がある。私は 'beforeShowDay'を使用していますが、これは無効になっています。私は 'beforeShowDay'を使う必要があります。これは、他のランダムな日付を指定したからです。 – locateganesh