2013-04-09 40 views
2

我正在創建一個日曆,需要能夠選擇(顯示/隱藏)div.event誰的data-dates(可能是字符串或數組,取決於天數該事件出現在)中,通過確定存儲在那裏的任何unix時間戳記日期是否落在代表當前選定月份的開始和結束的unix時間戳之間。因此,例如:JavaScript:選擇數據值在X和Y範圍內的元素

這是2013年4月,所以我希望看到只發生在四月事件(1364774400 [4月1日午夜]和1367366399 [4月30日,23:59:59])。

我有很多event的div。他們是這個樣子:

<div class="event" data-dates="[1367539200, 1367625600]">...</div> 
<div class="event" data-dates="[1364947200]">...</div> 

假設那些具有落在某個時候在2013年四月我該如何選擇他們的時間戳的一個或多個?

+0

看起來像.filter http://api.jquery.com/filter/工作選擇所有事件的div,然後用循環遍歷並比較日期的自定義回調過濾。 – 2013-04-09 21:13:39

+0

我懷疑,這可以通過使用純選擇來完成... – 2013-04-09 21:14:57

+0

@KevinB尋找到這個 – GhostToast 2013-04-09 21:17:09

回答

4

嘗試讓filter使用:

var rangeStart = 1364774400, 
    rangeEnd = 1367366399; 

$('.event').filter(function() { 
    return $(this).data('dates').some(function(date) { 
     return date >= rangeStart && date < rangeEnd; 
    }); 
}) 
.addClass('active'); 

http://jsfiddle.net/HJ9Xj/1/

注。 some方法不可用在IE < 9,從而可以墊片,或使用簡單for循環,以檢查是否數據數組包含startend之間的任何值。 Demo 2

+0

'var monthStart = new Date(y,m,1);''var monthEnd = new Date(y,m +1,0);'那麼是什麼? – GhostToast 2013-04-09 21:33:25

+0

嗚嗚嗚謝謝你在第二個演示中加倍努力!精美的作品。 – GhostToast 2013-04-09 21:48:53