[英]Jquery - if element contains a class, add HTML after element
我有一个预订form.booking-wrap
,里面有 2 个元素, div#booking
,然后div.quantity
<form class="booking-wrap">
<div id="booking"></div>
/* insert div#message IF div.quantity is present inside div.booking-wrap */
<div class="quantity"></div>
</form>
div.quantity
仅对某些预订动态显示。
我想要实现的是,如果div.quantity
存在,那么我想插入一个额外的 html div#message
,但是这个新的 div 应该出现在div#booking
之后和之前div.quantity
我正在尝试以下 jQuery:
if($('.booking-wrap:has(div.quantity)')){
$('#booking' ) .after( '<div id="message">Message</div>');
}
但这似乎不起作用。
然后我尝试了这个:
$('.booking-wrap:has(div.quantity)').append($('<div id="message">Message</div>'));
这有效,新的 div 出现,但它就在数量 div 旁边。
如何在#booking
之后但在.quantity
之前显示它?
尝试使用prepend
而不是 append,因为选择器$('.booking-wrap:has(div.quantity)
将返回(div.quantity)
元素。
例子:
$('.booking-wrap:has(div.quantity)').prepend($('<div id="message">Message</div>'));
任何选择器都返回 object,您应该检查返回的 object 的长度属性。 像$('.booking-wrap:has(div.quantity)').length
不过,我更喜欢$('.booking-wrap > div.quantity').length
if($('.booking-wrap > div.quantity').length){ $('#booking').after('<div id="message">Message</div>'); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form class="booking-wrap"> <div id="booking">booking</div> <div class="quantity">quantity</div> </form>
您可以使用“hasClass()” jQuery function 检查 class 是否存在:
尝试这个
if($( ".booking-wrap" ).children('div').hasClass( "quantity" )){
jQuery('<div id="message">Message</div>').insertAfter('.booking');
}
试试这个 jQuery。
if($(".quantity").length ){
$('#booking' ).after( '<div id="message">Message</div>');
}
您需要将要添加的 div 放入 function 中。
if($('.booking-wrap:has(div.quantity)')){
$( "#booking" ).after(function() {
return '<div id="message">Message</div>';
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.