有没有一种方法可以根据包含整数的最接近属性来确定项目的目标
Is there a way to target an item based on the closest attribute which contains an integer?
以下是我想要完成的基本想法,我有一个列表。。。
<ul>
<li position="400">Item 1</li>
<li position="510">Item 2</li>
<li position="590">Item 3</li>
<li position="614">Item 4</li>
</ul>
我想做的是根据数字选择最接近的项目。
如果我们的随机数是490,它会将"选定"的类添加到列表项2中。
但我不知道该怎么做,也不知道这是否可能。。。我这样做是为了导航,所以…
var position = $(window).scrollTop();
然后在按键上,选择位置属性最接近"position"变量的列表项。我说得通吗?
如果有人能帮我完成这件事,我会很感激,我失去了
function selectClosest(val){
var diffs = [];
$("li[position]").each(function(){
diffs.push(Math.abs(parseInt($(this).attr("position"))-val));
});
$("li[position]").eq(diffs.indexOf(Math.min.apply( Math,diffs))).css("font-weight","bold");
}
selectClosest(551);
我相信你可以在一个位置数组上进行二进制搜索:只需创建一个位置数组,按"位置"属性排序,然后进行二进制搜索:
var positions = [];
$("[position]").sort(function (a, b) {
return $(a).attr("position") - $(b).attr("position")
})
.each(function () {
positions.push(parseInt($(this).attr("position")));
});
在这个post上使用解决方案在Javascript中获得数组中最接近的值,给定一个值和一个排序的数组?你可以这样做:http://jsfiddle.net/elclanrs/phFUq/
var num = 600, // scroll number
$li = $('li'),
pos = [];
$li.each(function() {
pos.push($(this).attr('position'));
});
function sortfunc(a, b) { // To sort `pos` array
return a - b;
}
var getClosestValues = function(a, x) {
var lo, hi;
for (var i = a.length; i--;) {
if (a[i] <= x && (lo === undefined || lo < a[i])) lo = a[i];
if (a[i] >= x && (hi === undefined || hi > a[i])) hi = a[i];
};
return [lo, hi];
};
$('li[position=' +
getClosestValues(pos.sort(sortfunc), num)[0] +
']').toggleClass('red'); // Or whatever...
相关文章:
- 获取最接近的数组数
- 从同级字符串中指定最接近的元素类
- 当使用'最接近的':jQuery
- 如何使刻度四舍五入到最接近的 # 的倍数
- 如何根据数值通过数据属性进行搜索并获得最接近的值
- 通过搜索最接近的类来更改类
- 获取TR之外最接近的隐藏值
- JQuery获取最接近的元素并筛选子元素
- 获取最接近所选选项的最快方式
- j查询树遍历从子级到最接近过滤的父级
- JavaScript:如何在最接近值的关联数组中查找键
- jquery onclick 切换最接近的 UL
- 在 javascript 数组中搜索最接近的下一个值
- 如何确定乘以后将使您最接近目标数字的数字
- 单击按钮,如何获取与类最接近的td值
- javascript代码查找最接近零的tescase
- 未获得最接近0的结果
- JQuery 最接近属性返回未定义
- 查找具有特定数据属性 jquery 的最接近的上一个元素
- 有没有一种方法可以根据包含整数的最接近属性来确定项目的目标