我需要在jQuery中有一个复杂的选择,如下所示:
var ctrls = $('.ctrl').not('.ctrl:disabled,.ctrl:parent:hidden');
ctrls.parents('.InsideContainerControl:hidden').remove();很明显,第二行实际上将元素从dom中删除,而我正在寻找的是将其从选择列表中删除的方法。
发布于 2016-03-03 17:00:25
像这样的东西应该管用,你先过滤掉父母,然后过滤掉孩子:
$('.InsideContainerControl') // get all parents
.not('.InsideContainerControl:hidden') // remove hidden ones
.find('.ctrl') // get all children from the remaining
.not('.ctrl:disabled,.ctrl:parent:hidden') // remove disabled ones注意这个,应该忽略1,2(父隐藏)和4(禁用):
var sel =
$('.InsideContainerControl') // get all parents
.not('.InsideContainerControl:hidden') // remove hidden ones
.find('.ctrl') // get all children from the remaining
.not('.ctrl:disabled,.ctrl:parent:hidden');// remove disabled ones
alert(sel.text());<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="InsideContainerControl" style="display: none">
<button class="ctrl">1</button>
<button class="ctrl" disabled>2</button>
</div>
<div class="InsideContainerControl">
<button class="ctrl">3</button>
<button class="ctrl" disabled>4</button>
</div>
https://stackoverflow.com/questions/35778232
复制相似问题