javascript - 如果下一个元素有一个类,则将 HTML 添加到 div

标签 javascript jquery html css

首先是 fiddle :http://jsfiddle.net/krish7878/rwz7egdz/1/

我想做的很简单,有两个 div 类“panel-heading”和另一个类“panel-collapse”,那里有两个条件,

条件 1:如果 'panel-collapse' 有类 'collapse' 添加一些 html 到 'panel-heading'

条件 2:如果 'panel-collapse' 有类 'collapse' 添加一些不同的 html 到 'panel-heading'

代码如下:

HTML:

<div class="panel-heading">
Panel Heading
</div><!-- /.panel-heading-->
<div class="panel-collapse collapse">
    Panel Collapse with a just a collapse
</div><!-- /.panel-collapse -->
<br><br>
<div class="panel-heading">
Panel Heading
</div><!-- /.panel-heading-->
<div class="panel-collapse collapse in">
    Panel Collapse with collapse &amp; in 
</div><!-- /.panel-collapse -->

JS代码:

 $( ".panel-heading" ).next().hasClass(".collapse").append( "<i class='fa fa-plus'></i>" );

 $( ".panel-heading" ).next().hasClass(".collapse.in").append( "<i class='fa fa-minus'></i>" );

我很确定我在 js 部分遗漏了一些东西。任何帮助,将不胜感激。

最佳答案

您不需要链接nexthasClass。您可以只查询 next()

$(".panel-heading").next(".collapse:not(.in)")
                   .append("<i class='fa fa-plus'></i>");

$(".panel-heading").next(".collapse.in")
                   .append("<i class='fa fa-minus'></i>");

以上内容适用于您的 fiddle 。

关于您最初的解决方案失败的原因,请参阅@cgatian 的回答。

编辑:更新以反射(reflect)评论:

$(".panel-heading + .collapse:not(.in)").prev().append("<i class='fa fa-plus'></i>");
$(".panel-heading + .collapse.in").prev().append("<i class='fa fa-minus'></i>");

那么为什么这样做有效呢?我们正在使用同级运算符立即找到所有 .collapse/.collapse.in 元素,然后遍历回一个元素并附加到该元素。

关于javascript - 如果下一个元素有一个类,则将 HTML 添加到 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25416896/

相关文章:

jquery - 随着时间的推移用 CSS/jQuery 填充圆圈的背景颜色

javascript - 从 jQuery 中的函数返回值

javascript - 未捕获的语法错误 : Unexpected end of input error

javascript - 如何使用 fadeIn 与 css 属性更改 jquery

javascript - 如何通过对象 ID 访问其他属性值?

javascript - 是否可以在 js &lt;script&gt; 请求上设置自定义 header ?

html - Bootstrap-内联表单在 Chrome 中未正确对齐

HTML & CSS : My UL extends out of container

javascript - NS_ERROR_FAILURE : Failure in Firefox

javascript - 如何在kinetic.js中跟踪动画帧数?