javascript - 从选定列表中而不是从 dom 中删除元素

标签 javascript jquery

我需要在 jQuery 中进行复杂的选择 它应该如下所示:

var ctrls = $('.ctrl').not('.ctrl:disabled,.ctrl:parent:hidden');
ctrls.parents('.InsideContainerControl:hidden').remove();

很明显,第二行实际上从 dom 中删除了该元素 虽然我正在寻找一种将其从选择列表中删除的方法

最佳答案

这样的事情应该有效,您首先过滤掉 parent ,然后过滤掉 child :

$('.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>

关于javascript - 从选定列表中而不是从 dom 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778232/

相关文章:

javascript - 如何创建一个具有可在 AngularJS 中的 Controller 之间共享的属性的对象?

asp.net - jQuery 和 asp.net 不能很好地协同工作

javascript - 这种 JavaScript 是什么?并帮助处理 AJAX 请求

javascript - 获取屏幕上最明显的元素

javascript - 如何检索 textarea 的当前值?可以使用哪种方法代替 $ ("form").submit(function(){ ?

javascript - 数据类型 Jasmine

javascript - Jquery 选项卡 - 使用 onclick 函数获取内容

javascript - <a> 标签上的点击事件在 JQuery 中不起作用

javascript - 通过 JavaScript 和回发启用后,ListBox 中的选定项目不正确

javascript - Greasemonkey 不能充分发挥 jQuery 的威力吗?