2015-02-23 82 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"); 
     }); 
    }); 
}); 

編輯:我有工作在小提琴上時,一直打開帖子窗口,我看到你已經有了一些非常相似的答案。