我有一个小问题。我有一个像这样存储在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();
但是没有任何效果。谢谢您的宝贵时间。
答案 0 :(得分: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();