Jquery:根据属性将css类添加到某些div

时间:2015-02-23 14:30:31

标签: javascript jquery css each

我有几个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(),但失败了。

3 个答案:

答案 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");
        });
    });
});

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

相关问题