这个问题在这里已有答案:
我有一个小问题。我有一个像这样存储在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对象中删除”,你将使用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();