2015-02-23 81 views
1

我有几个div都有一个叫number的属性。Jquery:根据属性将css类添加到某些div

<div class="foo" number="1"></div> 
<div class="foo" number="2"></div> 
<div class="foo" number="3"></div> 

...等等。

当我点击其中的一个时,我会捕获该数字并将其存储在一个变量中。 然后,我想要运行一个函数,为f.eks添加一个额外的类:所有具有[我点击的] +7之间的数字属性的div。

有点像日期选择器那样。 我该怎么做。我尝试使用each(),但失败了。

+5

有你写的一些代码吗? – Ejaz 2015-02-23 14:31:27

+1

你说你已经尝试过每个()。你能发布你试过的代码吗? – anpsmn 2015-02-23 14:32:06

+1

添加一些您试过的代码 – 2015-02-23 14:32:09

回答

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');    
       } 

     }); 


    }); 

}) 
+0

太棒了。非常感谢! 我有parseInt,但完全使用each()错误! 这使它更清晰! – user3426703 2015-02-23 15:03:00

+0

@ user3426703 ..很高兴帮助 – 2015-02-23 15:05:27

1

快速&脏:

$(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 
      } 
     }); 
}); 
}); 
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"); 
     }); 
    }); 
}); 

编辑:我有工作在小提琴上时,一直打开帖子窗口,我看到你已经有了一些非常相似的答案。