【问题标题】:Remove element from a cached jquery selection从缓存的 jquery 选择中删除元素
【发布时间】:2012-07-02 12:42:56
【问题描述】:

这应该不是那么困难,但由于某种原因我遇到了麻烦。

我想从缓存的 ul 中删除第一个 li:

var $selection = jQuery('.list').filter('.exclude');

.

<ul class="list">
  <li class="exclude" >Do not Include</li>
  <li>2</li>
  <li>3</li>
</ul>

如何在没有第一个子 li 元素的情况下捕获 整个 ul 对象?

谢谢

编辑: 我正在寻找的结果 jquery 对象是:

<ul class="list">
  <li>2</li>
  <li>3</li>
</ul>

不是这个:

  <li>2</li>
  <li>3</li>

【问题讨论】:

  • “捕获整个 ul”是什么意思?您是否尝试将 $selection 创建为仅包含不具有“排除”类的 li 元素的 jQuery 对象?还是 jQuery 对象也应该包含 ul 元素本身?
  • 带有 Ul 元素本身的 Jquery 对象。我希望它返回一个不包括特定子 LI 的 UL。换句话说,我不希望它只返回一个孤立的 LI 元素。希望这有意义吗?
  • 实际上,不,这不太合理。如果你说jQuery(".list"),你会得到一个 jQuery 对象,其中只有一个元素,即 ul 元素 - 请注意,这是对实际 DOM 元素的 reference,所以你仍然可以使用遍历方法获取关联的 li 元素,但 li 元素都不在 jQuery 对象本身中。如果您希望 jQuery 对象包含 ul 元素和 lis(“排除”元素除外),您可以说 jQuery(".list,.list li:not(.exclude)")jQuery(".list").add(".list li:not(.exclude)")
  • 刚刚尝试了您建议的解决方案.. 他们都返回带有 li 元素(实际上不包括 .exclude)的原始 ul 附加 在 ul 之外 ..不是结果 i'我正在寻找..我要稍微编辑一下我的问题..我现在看到我在解释我想要什么方面做得很差..我很抱歉。
  • 您是否尝试通过实际删除“排除”元素来更新页面上显示的内容?或者复制原始列表并将副本附加到页面,以便您一次看到两个列表(一个包含三个 li 元素,一个包含两个)?我仍然感到困惑,因为您所描述的“jQuery 对象”实际上更像是一个 html 片段...

标签: jquery html jquery-selectors


【解决方案1】:

jsBin demo

var $selection = jQuery('.list li').not('.exclude');

(你很接近:)使用.not()(或:not)选择器和$('.list li')元素集合(待过滤)


$('.list li').remove('.exclude');

demo

http://api.jquery.com/not-selector/
http://api.jquery.com/not

【讨论】:

  • 这确实很好,我实际上能够解决我的问题......但是,我仍然很好奇......我如何让它返回整个 ul。所以我想像这样抓取整个 ul:jQuery('.list') 然后删除第一个孩子(.exclude)并返回整个 ul
  • @JoseBrowne $('.list li').remove('.exclude'); DEMO:jsbin.com/onidus/2/edit 抱歉,我没有看到您的后期编辑。
【解决方案2】:

http://jsfiddle.net/9NtLF =)

var list = $("ul.list").clone();
list.find("li.exclude").remove();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多