jQuery length属性完全不生效,判断相邻ul元素存在的逻辑异常如何解决?
问题根源
$('.form-group > .custom-control > label')返回的是所有符合选择器的<label>元素组成的jQuery集合,直接对整个集合调用next('ul').length统计的是集合内所有元素的下一个相邻节点中匹配ul的总数量,只要总数量大于0,后续的append操作就会作用到集合内的全部<label>上,因此所有标签都会被追加锚点元素。
修复方案
遍历每一个匹配到的<label>元素,单独判断当前元素的下一个相邻节点是否为<ul>后再执行追加操作,示例代码如下:
$('.form-group > .custom-control > label').each(function () { const $currentLabel = $(this); if ($currentLabel.next('ul').length) { $currentLabel.append('<a href="javascript:void(0);" class="toggle-button-sub" data-toggle="collapse" role="button">+</a>'); } });
内容的提问来源于stack exchange,提问作者Juraj。
相关产品推荐
相关产品推荐

