【问题标题】:Remove element from selected list not from dom从选定列表中删除元素而不是从 dom
【发布时间】:2016-06-17 03:16:31
【问题描述】:

我需要在 jQuery 中进行复杂的选择 应该是这样的:

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

事情显然是第二行实际上从dom中删除了元素 而我正在寻找的是一种将其从选择列表中删除的方法

【问题讨论】:

  • 你能描述一下remove it from the selection list的意思吗?不清楚。
  • 在您的问题中发布相关的 HTML。
  • 在您的初始选择中使用 .clone()。虽然删除父母实际上并不影响“选定列表”.....

标签: javascript jquery


【解决方案1】:

这样的事情应该可以工作,你首先过滤掉父母,然后过滤掉孩子:

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

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 2014-09-01
    • 2017-07-30
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多