如果有多个元素,如何只保留一个元素

发布于 2024-12-01 06:19:42 字数 415 浏览 5 评论 0原文

每次加载页面时,我都会有随机数量的具有相同类和不同(随机)ID 的元素。

我想知道如何根据它们的类在页面上只保留一个元素并从 DOM 中删除其他元素?

示例:

<div id="joke" class="hey"></div>
<div id="joking" class="hey"></div>
<div id="jokes" class="hey"></div>
<div id="joker" class="hey"></div>

我只想保留 id="joke",其中 joke(至于其他元素的 id 值)是随机/动态生成的。

Every time I load a page, I have a random number of elements with the same class and different(random) IDs.

I would like to know how I can keep only one element on the page and delete the others from DOM, according to their class?

Example:

<div id="joke" class="hey"></div>
<div id="joking" class="hey"></div>
<div id="jokes" class="hey"></div>
<div id="joker" class="hey"></div>

I would like to leave only id="joke" where joke (as for the other element's id values) is randomly/dynamically generated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

雪花飘飘的天空 2024-12-08 06:19:42

如果您只想保留第一个:

$('.hey').slice(1).remove();

参考: .slice().remove()

If you only want to keep the first one:

$('.hey').slice(1).remove();

Reference: .slice(), .remove()

九歌凝 2024-12-08 06:19:42

如果您想要第一个,您可以使用:

$(".hey").first();

如果您想要匹配的随机元素,您可以使用实现的 :random 过滤器 此处 并执行以下操作:

$(".hey:random");

If you want the first one, you can use:

$(".hey").first();

If you want a random element from those matched, you can use the :random filter implemented here and do:

$(".hey:random");
半﹌身腐败 2024-12-08 06:19:42

我注意到这里只有假设 jQuery 可用的答案。虽然显然 jQuery 毫无疑问是完美的并且应该当选总统,但我将假设它不可用。让我们只使用 DOM 来完成此操作(删除除第一个元素之外的所有元素)。 (参见 JSfiddle

<div id="foo">
    <!-- a jocular comment -->
    <div id="joke" class="hey">1</div>
    <div id="joking" class="hey">2</div>
    <div id="jokes" class="hey">3</div>
    <div id="joker" class="hey">4</div>
</div>

js:

var parent = document.getElementById('foo'),
    elems = parent.childNodes, // live list
    firstElemNode,
    i = 0;

while (elems[i] && elems[i].nodeType != 1) {
    i++;
}

if (elems[i]) {
   firstElemNode = parent.removeChild(elems[i]);
   parent.innerHTML = '';
   parent.appendChild(firstElemNode);
}

我们寻找第一个元素节点(不是文本节点或注释节点) )。如果我们找不到一个,我们就足够聪明,什么也不做。

I noticed that there are only answers here that assume jQuery is available. While obviously jQuery is without a doubt perfect and should be elected president I'm going to assume that it's NOT available. Let's do this (removing all except the first element) just using the DOM shall we. (see JSfiddle)

<div id="foo">
    <!-- a jocular comment -->
    <div id="joke" class="hey">1</div>
    <div id="joking" class="hey">2</div>
    <div id="jokes" class="hey">3</div>
    <div id="joker" class="hey">4</div>
</div>

js:

var parent = document.getElementById('foo'),
    elems = parent.childNodes, // live list
    firstElemNode,
    i = 0;

while (elems[i] && elems[i].nodeType != 1) {
    i++;
}

if (elems[i]) {
   firstElemNode = parent.removeChild(elems[i]);
   parent.innerHTML = '';
   parent.appendChild(firstElemNode);
}

We look for the first node that is an element (not a text node or comment node). If we can't find one we are smart enough to do nothing.

岁月静好 2024-12-08 06:19:42
var $els = $('.hey');
$els.not($els.eq(Math.floor(Math.random()*$els.length))).remove();

JSFiddle

var $els = $('.hey');
$els.not($els.eq(Math.floor(Math.random()*$els.length))).remove();

JSFiddle

撕心裂肺的伤痛 2024-12-08 06:19:42

试试这个

$('.hey').not('#joke').remove()

Try this

$('.hey').not('#joke').remove()
紫罗兰の梦幻 2024-12-08 06:19:42
$('div.hey:not(:first)').remove()
$('div.hey:not(:first)').remove()
七堇年 2024-12-08 06:19:42

要显示随机 .hey 元素:

$('.hey').hide();
$('.hey')[Math.floor(Math.random()*$('.hey').length)].show();

To show a random .hey element:

$('.hey').hide();
$('.hey')[Math.floor(Math.random()*$('.hey').length)].show();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文