检查 span 元素是否包含“文本”,并且是父元素的最后一个子元素
Check if an span element contains a "text" and is the last child of a parent element
我正在循环属于"frag"
类的span元素。我想检测碎片元素 im 当前是否在
- 父级的类名上带有"cond"和
- 该父项包含文本"if"或"else if"和
- 目前的碎片是父母的最后一个孩子,有资格在1号和2号。
(顺便说一下,我的系统就像一个代码编辑器,所以我使用的是内容可编辑的div)在这里,我想检测 im 是否在 b
上有资格作为 1、2 和 3
内容可编辑div (文本区域)
if( (b>3) && b<10)
我所做的并不介意循环。我不知道如何构建条件。
if( $('.frag').eq(ctr).parent().hasClass('cond') && /(?:if|else's+if)/g.test$('.frag').eq(ctr).text() && $('.frag').eq(ctr).lastChildOfParent )
.HTML
<div id="board">
<div>
<span class="frag cond">if <span class="openParen bm1">(</span> <span class="frag cond">(<span class="frag">b</span>>3) </span> && <span class="frag">b</span><10 <span class="closeParen bm1">)</span></span>
</div>
</div>
UPDATE1:添加了(
和)
的跨度换行。这使)
成为最后一个孩子。
UPDATE2:我所说的父母的意思是,它可以是直系父母,祖父母或祖祖父母。这样,内容可编辑div 中的文本就不会有问题,例如 if( (b>3) && ((c>1)||(乙<10)))
因为当 im 在最后一个b
的片段中时,我不会在我的直系父母 (b<10) 中找到"if"或"else if"
测试是否是最后一个孩子
$('.frag').eq(ctr).is(function(){
var $this = $(this), fragsibs = $this.siblings('.frag').addBack();
return fragsibs.last().is(this) && /^(if|else 's+if)/.test($this.text())
});
您似乎有 (1) 和 (2) 正常,所以对于 (3),请尝试:
$elem.nextAll('.frag').length === 0
其中$elem
是你正在测试的元素的jQuery对象。
请参阅:http://api.jquery.com/nextAll/
所以,总的来说,你想要这样的东西:
var $parent = $elem.parent();
if ($parent.hasClass('cond') && /^'s*(if|else's+if)/.test($parent.text()) && !$elem.nextAll('.frag').length) {
// do things
}
我唯一不确定的是正则表达式,因为我不是 100% 你想要的。我选择了以"if"或"else if"开头。
更新:如果我了解您的更新,请尝试:
var validAncest = $elem.parents('.cond').filter(function(i){
return /^'s*(if|else's+if)/.test($(this).text());
});
// this finds all ancestors with class 'cond' and
// whose containing text starts with 'if'/'else if'
if (validAncest.length && !$elem.nextAll('.frag').length) {
// do things
}
更新2:如果您需要计算祖先中后代的深度,则可以使用:
function childDepth ($elem, $ancestor) {
var generations = 0;
while ($elem[0] && $elem[0] !== $ancestor[0]) {
generations++;
$elem = $elem.parent();
}
if ($elem[0]) {
return generations;
}
}
如果$ancestor
是$elem
的父代,它将返回1,如果是祖父级,则返回2;如果$ancestor
实际上不是$elem
的祖先,它将返回undefined
。
相关文章:
- 表追加而不附加最后一个元素
- 使用querySelector()获取最后一个td元素
- 如何查找流星集合中最后一个元素/对象的id
- 如何在使用Protractor测试时找到ng中继器的最后一个元素
- 在元素数组上循环只会影响最后一个元素
- 推特引导滚动间谍总是选择最后一个元素
- 选择页面上具有特定类的最后一个元素
- 检查 JQuery 每个函数中的最后一个元素
- 保持元素可滚动,直到到达最后一个内容
- 选择表中的最后一个元素
- forEach 仅执行数组的最后一个元素
- JavaScript,数组和函数 - 只有数组的最后一个元素有效
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- jQuery - 选择具有相同 ID 的组的最后一个元素
- 第一个元素和最后一个元素之间的连续循环
- 更改元素HTML,但忽略最后一个子项
- 除了最后一个<td>元素-Jquery
- 在JavaScript数组中查找最后一个元素的计算效率最高的方法
- 将同一个元素追加到两个下拉列表中只会导致最后一个元素被追加
- 如何在jquery中读取Section中的最后一个元素