我有一整天的时间列表,希望根据它接近当前时间选择时间。
overlaysTooltips.get(i).getAttribute("id")
or
overlaysTooltips.get(i).getAttribute("class")
or
overlaysTooltips.get(i).getAttribute("name")

now = 11:18;
$(function(){
})

.selected{
font-weight:bold;
}

^列表上的选定时间现在应该切换到11:30,因为它不再接近11:00。
我被困在某个地方,我知道我应该得到不同的时间并除以2,但不知道如何继续。
答案 0 :(得分:1)
尝试使用.filter(0)
,String.prototype.replace()
,使用.data()
存储li
文字的24小时呈现,投放data-*
属性和now
到Number
,.eq(0)
选择第一场比赛,.siblings()
var now = "1116";
$(function() {
$("li").filter(function() {
return +$(this).data().t > +(now) && +$(".selected").data().t
}).eq(0).addClass("selected").siblings().removeClass("selected")
})
.selected {
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<li class="selected" data-t="1100">11:00</li>
<li data-t="1130">11:30</li>
<li data-t="1200">12:00</li>
<li data-t="1230">12:30</li>
<li data-t="1300">1:00</li>
<li data-t="1330">1:30</li>
<li data-t="1430">2:30</li>
<li data-t="1530">3:00</li>
jsfiddle https://jsfiddle.net/ptfa9a04/9/
答案 1 :(得分:1)
继承人的另一种方式
var now = "12:18";
$(function() {
var els = $('ul li'),
times = els.map(function() { return $(this).text() }).get(),
diff = Infinity, i = 0
times.forEach(function(time, index) {
var a1 = now.split(':');
var d1 = new Date(2015, 1, 1, a1[0], a1[1]);
var a2 = time.split(':');
var d2 = new Date(2015, 1, 1, a2[0], a2[1]);
var d = Math.abs(d1-d2);
if ( d < diff ) {
diff = d; i = index;
}
});
els.eq(i).addClass('selected').siblings().removeClass('selected')
});
&#13;
.selected {
font-weight: bold;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>11:00</li>
<li>11:30</li>
<li>12:00</li>
<li>12:30</li>
<li>1:00</li>
<li>1:30</li>
<li>2:30</li>
<li>3:00</li>
</ul>
&#13;
答案 2 :(得分:0)
检查此fiddle
function findClosestTimeInList( $listULObj, now )
{
now = now.split( ":" ).join("");
var arr = [];
$listULObj.find( "li" ).each( function(){
var value = $( this ).html().split( ":" ).join("");
arr.push( value );
$( this ).attr( "data-val", value );
} );
$listULObj.find( "li[data-val='" + closestInArray(arr, now) + "']" ).addClass( "selected" ).siblings().removeClass( "selected" );
function closestInArray(arr, goal)
{
return closest = arr.reduce(function (prev, curr) {
return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev);
});
}
}
findClosestTimeInList( $( "ul" ), "11:18" );
同样你也可以尝试其他输入
findClosestTimeInList( $( "ul" ), "12:18" );
这将从列表中选择12:30。
答案 3 :(得分:0)
如果它已整理并以24小时格式作为您的评论。你可以试试,
var now = '04:01';
$(function(){
var a = now.split(':');
var date1 = new Date();
var date2 = new Date();
date1.setHours(a[0], a[1], 0, 0, 0);
$("li").removeClass('selected').each(function(){
var b = $(this).text().split(':');
date2.setHours(b[0], b[1], 0, 0, 0);
if (date2 >= date1) {
$(this).addClass('selected');
return false;
}
});
})