0

如果您认为日历看起来像视图。每个 dayHolder 都有一个 data-date 属性。如果我然后从日期选择器日历中选择一个 fromDate 和一个 untilDate 。然后我计算从 fromDate 到 untilDate 之间的天数,后来我在自己的日历中找到我的 fromDate 并在这个日历上写一个状态,接下来我找到第二天并在那个日期上写一个状态,并继续直到达到我的 untilDate 日期。

这样做的最佳方法是什么?使用数据日期查找每个 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 并想使用 slice 方法。我如何找到具有正确日期日期的特定 dayHolder 的索引。这是一个

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

但是 $('.dayHolder') 中的那个索引是什么?

像这样:

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