如何解决如果下一个类是特定的,则 jQuery 不会在类之后插入
<div class="group">
<div class="A1_B1 symptom">Bla Bla Bla</div>
<div class="class1 symptom">Bla Bla Bla</div>
<div class="A1_B1 symptom">Foo Foo Foo</div>
<div class="A1_B3 symptom">Con Con Con</div>
<div class="A1_B1 symptom"><a href="#" class="connect">Click Me</a></div>
</div>
当我点击 DIV class="A1_B1" 时,我必须在 class="A1_B1" 之后插入一些 html,条件如下: (i) 不应在单击的 DIV 之后插入 html。 (ii) html 不应插入到任何紧邻下一个 class="class1" 的 DIV 之后。
根据给定的条件,html 应该是这样的 -
<div class="group">
<div class="A1_B1 symptom">Bla Bla Bla</div>
<div class="class1 symptom">Bla Bla Bla</div>
<div class="A1_B1 symptom">Foo Foo Foo</div>
<div class='class2'>Bar Bar Bar</div>
<div class="A1_B3 symptom">Con Con Con</div>
<div class="A1_B1 symptom"><a href="#" class="connect">Click Me</a></div>
</div>
...这是我写的,它不起作用。谁能帮我解决这个问题。提前致谢。
$(document).on("click",".connect",function (ev) {
var thisClass = $(this).parents('div.symptom').attr('class');
var html = "<div class='class2'>Bar Bar Bar</div>";
$(html).insertAfter("A1_B1":not("."+thisClass).next('div:not(.class1)'));
});
解决方法
您可以使用 .each
循环遍历您的 symptom
div。然后,在此检查下一个 div 是否没有类 class1
取决于此在该 div 之后添加您的 html .
演示代码:
$(document).on("click",".connect",function(ev) {
var selector = $(this).closest(".group")
var not_to_compare = $(this).parent();
//loop through all divs ..
selector.find(".A1_B1").not(not_to_compare).each(function() {
//if neext class is not class1
if (!$(this).next().hasClass("class1")) {
var html = "<div class='class2'>Bar Bar Bar</div>";
$(html).insertAfter($(this)) //add there
}
})
});
.class2 {
color: red
}
.class1 {
color: blue
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<div class="group">
<div class="A1_B1 symptom">Bla Bla Bla</div>
<div class="class1 symptom">Bla Bla Bla</div>
<div class="A1_B1 symptom">Foo Foo Foo</div>
<div class="A1_B3 symptom">Con Con Con</div>
<div class="A1_B1 symptom"><a href="#" class="connect">Click Me</a></div>
</div>
我无法理解您想要达到什么目的,但为了匹配您可以使用 insertBefore
代替的条件。
$('.connect').on("click",function (ev) {
var html = '<div class="class2">Bar Bar Bar</div>';
$(html).insertBefore($(this).parent());
});
可以在锚元素的父元素之前插入。满足这两个条件。但是,我认为您应该提供更多测试用例,以防这不是您想要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。