Javascript 如果上一个div不是';t具有相同的class属性
我的代码如下:(随机生成)Javascript 如果上一个div不是';t具有相同的class属性,javascript,css,Javascript,Css,我的代码如下:(随机生成) 现在我想检查每个div,看看前面的div是否没有相同的class属性 我想实现以下目标: <div class="class1"> </div> <!-- first div: nothing happens--> <div class="class2"> </div> <!-- previous div has other class: margin-top:10px;--> <div
现在我想检查每个div,看看前面的div是否没有相同的class属性
我想实现以下目标:
<div class="class1"> </div> <!-- first div: nothing happens-->
<div class="class2"> </div> <!-- previous div has other class: margin-top:10px;-->
<div class="class1"> </div> <!-- previous div has other class: margin-top:10px;-->
<div class="class1"> </div> <!-- same class: nothing happens-->
<div class="class2"> </div> <!-- previous div has other class: margin-top:10px;-->
<div class="class1"> </div> <!-- previous div has other class: margin-top:10px;-->
<div class="class1"> </div> <!-- same class: nothing happens-->
<div class="class1"> </div> <!-- same class: nothing happens-->
<div class="class2"> </div> <!-- previous div has other class: margin-top:10px;-->
我想我需要循环每个div,并检查前一个div是否具有相同的类或类似的类
我真的希望现在能更好地理解。:) 我认为下面的方法应该有效。保留对上一个类的引用。迭代所有以
^=
开头的div,检查prev类是否与我们正在循环的元素的类匹配,然后应用我们的边距top。最后,将前一个类设置为当前元素的类,以便在下一次迭代中进行比较
var prev_class;
$('div[class^="class"]').each(function(){
var $this = $(this);
if(prev_class == $this.prop('class')){
$this.css('margin-top', '10px');
}
prev_class = $this.prop('class');
});
使用jquery的next()和prev()以及hasClass(),可以看到类之间的差异:
$(“div”)。在(“单击”,函数()
{
警报($(this.attr(“类”));
警报($(this.next().attr(“类”));
警报($(this.prev().attr(“类”));
警报($(this.next().hasClass(“class1”));
警报($(this.prev().hasClass(“class1”));
});代码>
.class1
{
宽度:100%;
高度:3雷姆;
背景:蓝色;
}
.2级
{
宽度:100%;
高度:3雷姆;
背景:绿色;
}
.3级
{
宽度:100%;
高度:3雷姆;
背景:黄色;
}
HTML代码应按原样添加,而不仅仅是伪代码。用示例说明具有相同类的div之间的关系。另外,添加您解决问题的尝试。这里是否有必要?如果存在重复的类,您想做什么?应用一种风格,用jQuery做点什么?你说的“他们之间”是什么意思?@Tushar好的,我现在试着更好地解释它。很难为我描述它,对不起。@BrettDeWoody DeWoody DeWoody我编辑了这个问题,现在可能更容易理解了。您可以使用each()函数进一步迭代元素,如@Ohgodwhy所示。请记住“下一步”和“上一步”指的是当前项目。
var prev_class;
$('div[class^="class"]').each(function(){
var $this = $(this);
if(prev_class == $this.prop('class')){
$this.css('margin-top', '10px');
}
prev_class = $this.prop('class');
});
//iterate over the divs
$('div[class^="class"]').each(function(){
//get the previous div with correct class
var prev = $(this).prev('div[class^="class"]');
//if there's a previous element and it doesn't match the class
if(prev.length > 0 && !$(this).hasClass(prev.prop('class'))){
//add the margin
$(this).css('margin-top', '10px');
};
});