我列出了即将发生的日期事件,是否有任何JQuery代码/插件:
1)首先按最新日期排序事件清单 2)让最新活动在活动当天的某个时间消失 3)假设我有15个即将发生的事件列表,我想在每个给定时间只显示6个事件列表。
<div id="event">
<ul>
<li><a href="single's_weekend.html">Single's WeekEnd</a><p>Sat & Sun, Nov 10th - 11th 2013</p></li>
<li><a href="women's_conference.html">Women's Con.</a><p>Sunday, May 20th 2013</p></li>
<li><a href="children's_day.html">Children's Day</a><p>Sunday, May 27th 2013</p></li>
<li><a href="couple's_retreat.html">Couple's Retreat</a><p>Fri-Sun, June 1st - 3rd 2013</p></li>
<li><a href="week_of_prayer.html">Week of Prayer</a><p>Mon-Sun, Sept 3rd - 8th 2013</p></li>
<li><a href="annual_conference_2012.html">Annual Conference 2013</a><p>Wed-Sun, October 3rd - 7th 2013</p></li>
</ul>
</div>
答案 0 :(得分:1)
这是一个有效的代码... jsFiddle:http://jsfiddle.net/KrTNJ/1/
实施了三项功能:
<强> sortEvents 强>
按结束日期的顺序对列表进行排序,并为每个li元素添加一个id。
<强> removeOldEvents 强>
删除截至今天的事件。您可以在计时器或其他东西或启动期间调用它。仅当sortEvents已经执行时,这仅适用。
<强> displaySome(计数)强>
仅显示“计数”条目。仅当sortEvents已经执行时,这仅适用。
// Uses jQuery
$(document).ready(function(){
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var month_index = function(target) {
target = target.toLocaleLowerCase();
return jQuery.inArray(true, jQuery.map(months, function(s) {
return s.toLocaleLowerCase().indexOf(target) > -1;
})) + 1;
};
function getKeys(obj) {
var keys = [];
for(var key in obj) {
if(obj.hasOwnProperty(key)) {
keys.push(key);
}
}
return keys;
}
function sortEvents() {
eventList = new Object();
$("#event ul li").each(function(index, value) {
dates = $(this).children("p")[0];
dates = $(dates).text().split(",")[1].trim();
m = dates.split(" ");
if(dates.search("-") != -1) {
m.splice(1, 2);
}
m[1] = m[1].substring(0, m[1].length - 2);
month = month_index(m[0])
id = m[2] + "-" + (month < 10 ? "0" + month : month) + "-" + (m[1] < 10 ? "0" + m[1] : m[1]);
eventList[id] = "<li id='" + id + "'>" + $(this).html() + "</li>";
});
eventKeys = getKeys(eventList).sort();
$("#event ul").empty();
for(i = 0; i < eventKeys.length; i++) {
$("#event ul").append(eventList[eventKeys[i]]);
}
}
function removeOldEvents() {
$("#event ul li").each(function(index, value) {
a = $(this).attr('id').split("-");
d = new Date(a[0], (a[1] - 1), a[2]);
g = new Date();
g.setHours(0,0,0,0);
c = (d > g) - (g > d);
if(c < 1) {
// Remove
$(this).remove();
}
});
displaySome(6);
}
function displaySome(count) {
$("#event ul").find('li:gt(' + (count - 1) + ')').hide();
}
sortEvents();
removeOldEvents();
displaySome(6);
});
希望这会有所帮助......
答案 1 :(得分:0)
如果您使用数据库存储所有这些事件,则可以使用按日期排序desc 并选择大于当前日期的日期(其中日期&gt;今天 )并将它们仅限制为6(使用限制子句)