Jquery: 根据属性给某些div添加css class
Jquery: Adding css class to certain divs based on attributes
我有几个 div,它们都有一个名为 number 的属性。
<div class="foo" number="1"></div>
<div class="foo" number="2"></div>
<div class="foo" number="3"></div>
...等等。
当我点击其中一个时,我捕获了数字并将其存储在一个变量中。
然后我想 运行 一个函数,将额外的 class 添加到 f.eks:所有具有数字属性的 div 在 [我点击的那个] 到 +7 之间。
有点像一些日期选择器。
我该怎么做。我尝试使用 each(),但失败了。
快速而肮脏:
$(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
}
});
});
});
看到这个fiddle: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');
}
});
});
})
试试这个:
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");
});
});
});
编辑:我在 fiddle 上工作时一直打开 post window,我看到你已经得到了一些非常相似的答案。
我有几个 div,它们都有一个名为 number 的属性。
<div class="foo" number="1"></div>
<div class="foo" number="2"></div>
<div class="foo" number="3"></div>
...等等。
当我点击其中一个时,我捕获了数字并将其存储在一个变量中。 然后我想 运行 一个函数,将额外的 class 添加到 f.eks:所有具有数字属性的 div 在 [我点击的那个] 到 +7 之间。
有点像一些日期选择器。 我该怎么做。我尝试使用 each(),但失败了。
快速而肮脏:
$(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
}
});
});
});
看到这个fiddle: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');
}
});
});
})
试试这个:
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");
});
});
});
编辑:我在 fiddle 上工作时一直打开 post window,我看到你已经得到了一些非常相似的答案。