0

カレンダーを考えると、ビューのように見えます。各 dayHolder には data-date プロパティがあります。次に、datepicker カレンダーから fromDate と untilDate を 1 つ選択するとします。次に、fromDate と untilDate の間の日数を計算します。後で、自分のカレンダーで fromDate を見つけて、これにステータスを書き込みます。次に、次の日を見つけて、その日付にステータスを書き込み、到達するまで続けます。私の untilDate -日付。

これを行う最善の方法は何ですか?data-date を使用して各 dayDiv を見つけるのは、大変なことのように感じます。

だから私は今のところこのようにしました:

var fromDate = new Date(calenderStatus.fromDate.substring(0, 10));
var untilDate = new Date(calenderStatus.untilDate.substring(0, 10));
var days = 0;

if (fromDate <= untilDate) {
    var smallDate = new Date(fromDate.getFullYear(), fromDate.getMonth(), fromDate.getDate(), 0, 0, 0, 0);
    var maxDays = new Date(untilDate.getFullYear(), untilDate.getMonth(), untilDate.getDate(), 0, 0, 0, 0);
    days = (maxDays - smallDate) / (1000 * 60 * 60 * 24);
}

if (days > 0) {
    var dayHolder = $(".dayHolder[data-date='"+ calenderStatus.fromDate +"']");

    for (var i = 0; i < days; i++) {
        //do something with dayHolder
        dayHolder = dayHolder.next('.dayHolder');
    }

HTML:

<div class="dayHolder ui-grid-a" data-changeable="true" data-date="2013-06-24">
<div class="dayHolder ui-grid-a" data-changeable="true" data-date="2013-06-25">
<div class="dayHolder ui-grid-a" data-changeable="true" data-date="2013-06-26">
4

1 に答える 1

0

質問があったのでコメントしました。これはコメントです:

:lt() は jQuery 拡張機能であり、CSS 仕様の一部ではないため、:lt() を使用するクエリは、ネイティブ DOM の querySelectorAll() メソッドによって提供されるパフォーマンス向上を利用できません。最新のブラウザーでパフォーマンスを向上させるには、代わりに $("your-pure-css-selector").slice(0, index) を使用してください。

すべての .dayHolder を取得し、スライス メソッドを使用したい場合。正しい日付と日付を持つ特定の dayHolder のインデックスを見つけるにはどうすればよいですか。これは

var specificDiv = $(".dayHolder[data-date='"+ calenderStatus.fromDate +"']");

しかし、 $('.dayHolder') のそのインデックスは何ですか?

このような:

$('.dayHolder').slice(specificDiv, 5)
于 2013-06-24T08:56:20.710 に答える