从对象jquery中删除某个索引处的元素[duplicate]

问题描述 投票:0回答:1

我有一个小问题。我有一个像这样存储在var里面的jquery对象

var buttons = $(data).find('.buttons>button');

当我写出按钮时,它会返回给我:

0: button#pc_0.btn.btn-outline-dark
1: button#pc_1.btn.btn-outline-dark
2: button#pc_2.btn.btn-outline-dark
length: 3
prevObject: r.fn.init(35) [text, title, text, meta, text, meta, text, link, text, link, text, link, text, script, text, script, text, script, text, script, text, script, text, script, text, div.d-flex.justify-content-end.bg-dark.mb-3, text, div.jumbotron.jumbotron-fluid.text-center, text, div.container, text, footer.footer, text, script, text]
__proto__: Object(0)

这看起来不错。但我的问题是我无法删除某个索引处的元素。我试过这样的方法。

$(buttons).remove('#pc_1');

要么

$(buttons).eq(2).remove();

但没有任何作用。感谢您的时间。

jquery
1个回答
0
投票

如果你的意思是“从jQuery对象中删除”,你将使用filter

buttons = buttons.filter(index => index !== 1);
// or
buttons = buttons.filter((_, element) => element.id !== "pc_1");
// etc.

或传入选择器:

buttons = buttons.filter(":not([id=pc_1])");
// or
buttons = buttons.filter(":not(:eq(1))");
// etc.

实例:

let buttons = $("button");
console.log(buttons.map((_, e) => e.id).get());
buttons = buttons.filter(":not([id=pc_1])");
console.log(buttons.map((_, e) => e.id).get());
<button id="pc_0" class="btn btn-outline-dark">0</button>
<button id="pc_1" class="btn btn-outline-dark">0</button>
<button id="pc_2" class="btn btn-outline-dark">0</button>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

你澄清了是的,你的意思是“从jQuery对象中删除”,但只是为了其他人提出这个问题并稍后回答:

如果你的意思是“从DOM中移除”,你的.eq示例将适用于索引1而不是2(eq是基于0的):

button.eq(1).remove();

或者再次,过滤,但这次只保留目标元素,然后remove

buttons.filter((_, element) => element.id === "pc_1").remove();

但是,由于该特定元素具有id,如果您基于该ID删除,则执行此操作会更简单:

$("#pc_1").remove();
© www.soinside.com 2019 - 2024. All rights reserved.