Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果上一个div不是';t具有相同的class属性_Javascript_Css - Fatal编程技术网

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