2011-08-25 9 views
1

ページを読み込むたびに、同じクラスと異なる(ランダム)IDの要素がランダムにあります。複数の要素がある場合、1つの要素のみを保持する方法

私はそのクラスに応じて、ページ上に1つの要素しか残さず、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> 

Iは、(他の要素のID値のような)jokeランダム/動的生成されるだけid="joke"を残したいです。

+0

うわー...誰もがランダムな部分を見逃したように見えます。 – Paulpro

+0

@Paul:私は、IDが動的に生成されるので(IDで選択できないように)、ランダム要素を保持する必要はないということを理解しました。しかし、はい、別の方法で理解することは可能です.... OPは明確にする必要があります。 –

+0

@Felixああ、私はそれがどのようにそのように読むことができるかを見ています。私は彼が彼がランダムなIDを生成し、そのIDだけを残したがっていることを意味したと思うが、正しいかもしれない。 – Paulpro

答えて

6

をお試しください:

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

参考:.slice().remove()

1

あなたが最初のものだけを残しておきたい場合は、この

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

IDは動的に生成される... –

3

をあなたが最初のものにしたい場合は、することができます使用:

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

あなたはマッチしたものの中からランダムな要素が必要な場合は、:randomフィルタがhereを実装してください使用することができます。

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

JSFiddle

+1

+1他の解釈を考慮して;) –

1
$('div.hey:not(:first)').remove() 
1

ランダムを表示します。要素:

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

ここでは、jQueryが利用可能であると回答したことに気付きました。明らかにjQueryは完璧な疑いがなく、大統領に選出されるべきですが、私はそれが利用できないと仮定しようとしています。 DOMを使用するだけで、これをやってみましょう(最初の要素を除くすべてを削除します)。

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); 
} 

私たちは、要素(ないテキストノードやコメントノード)で最初のノードを探します。

<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(JSfiddleを参照してください)。私たちが1つを見つけることができなければ、私たちは何もしないほどスマートです。