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

Javascript 如果有多个元素,如何只保留一个元素,javascript,jquery,dom,Javascript,Jquery,Dom,每次加载页面时,我都会有随机数目的元素,它们具有相同的类和不同的(随机)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

每次加载页面时,我都会有随机数目的元素,它们具有相同的类和不同的(随机)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值)是随机/动态生成的。

试试这个

$('.hey').not('#joke').remove()
试试这个

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

如果您只想保留第一个:

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

参考:

如果您只想保留第一个:

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

参考:

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

$(".hey").first();
如果需要匹配的元素中的随机元素,可以使用实现的
:random
过滤器并执行以下操作:


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

$(".hey").first();
如果需要匹配的元素中的随机元素,可以使用实现的
:random
过滤器并执行以下操作:

要显示随机元素,请执行以下操作:

$('.hey').hide();
$('.hey')[Math.floor(Math.random()*$('.hey').length)].show();
要显示随机的.hey元素:

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

我注意到这里只有假设jQuery可用的答案。虽然jQuery无疑是完美的,应该被选为总统,但我认为它是不可用的。让我们使用DOM来实现这一点(除去第一个元素之外的所有元素)。(见附件)


我们寻找作为元素的第一个节点(不是文本节点或注释节点)。如果我们找不到一个,我们就会聪明到什么都不做。

我注意到这里只有假设jQuery可用的答案。虽然jQuery无疑是完美的,应该被选为总统,但我认为它是不可用的。让我们使用DOM来实现这一点(除去第一个元素之外的所有元素)。(见附件)


我们寻找作为元素的第一个节点(不是文本节点或注释节点)。如果我们找不到,我们就会聪明到什么都不做。

哇。。。似乎每个人都错过了随机部分。@Paul:我是这样理解的,ID是动态生成的(所以不能按ID选择),而不是应该保留随机元素。但是,是的,有可能以不同的方式理解。。。。《凤凰社》必须澄清。@Felix啊,我知道怎么会这样读。我想他的意思是他想生成一个随机id,只保留那个id,但你也可能是对的。@lspuk:这并不能真正澄清问题。你想保留其中的一个随机元素还是只保留第一个?对。。。对不起。我只想保留第一个;)哇!似乎每个人都错过了随机部分。@Paul:我是这样理解的,ID是动态生成的(所以不能按ID选择),而不是应该保留随机元素。但是,是的,有可能以不同的方式理解。。。。《凤凰社》必须澄清。@Felix啊,我知道怎么会这样读。我想他的意思是他想生成一个随机id,只保留那个id,但你也可能是对的。@lspuk:这并不能真正澄清问题。你想保留其中的一个随机元素还是只保留第一个?对。。。对不起。我只想保留第一个;)
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);
}