我有几个div都有一个名为number的属性。
<div class="foo" number="1"></div>
<div class="foo" number="2"></div>
<div class="foo" number="3"></div>
......等等。
当我点击其中一个时,我会抓住该数字并将其存储在一个变量中。 然后我想运行一个函数,为f.eks添加一个额外的类:所有具有number-属性的div [我点击的那个]到+7。
有点像日期拣货员那样做。 我该怎么做我尝试使用each(),但失败了。
答案 0 :(得分:2)
看到这个小提琴:http://jsfiddle.net/nd2e33dp/
你可以写一个像这样的函数
$(function(){
$('.foo').click(function(e){
var num=parseInt($(this).attr('data-number'));
$('.foo').each(function(i,ele){
var compare=parseInt($(e.target).attr('data-number'))+7;
var eleNumber=parseInt($(ele).attr('data-number'));
if( eleNumber>=num && eleNumber<compare)
{
console.log('in');
$(ele).addClass('red');
}
});
});
})
答案 1 :(得分:1)
快速&amp;脏:
$(document).ready(function(){
$(".foo").click(function(){
var low = parseInt($(this).attr("number"));
var high = low + 7;
$(".foo").each(function(){
var num = $(this).attr("number");
if (num > low && num < high){
//YourFunction
}
});
});
});
答案 2 :(得分:1)
试试这个:
http://jsfiddle.net/dejvidpi/36th41k6/2/
它使用你所说的相同方法 - 获取点击的ID,然后通过所有div和选择的标记+7。
这有点浪费,因为它会遍历所有的div,但它应该指向正确的方向。
$(document).ready(function(){
$('div').click(function(){
$('div').removeClass("active");
var id = parseInt($(this).attr("number"));
$.each($('div'), function(index, item){
var currId = parseInt($(item).attr("number"));
if (currId >= id && currId <= id + 7)
$(item).addClass("active");
});
});
});
编辑:我在小提琴上工作的时候一直打开了帖子窗口,我看到你已经得到了一些非常相似的答案。