2011年02月20日
jqueryでランダム化
jqueryは便利ですが、今一つ使い方がピンと来ていないので覚書です。
<div id="jobPickUpHome" class="entryFrame">
<div class="entryTop">-</div>
<div class="entryBody">
<div class="jobHome">
<div class="entryTitle">
<h3>テスト1</h3>
</div>
<dl>
<dt>テストタイトル1</dt>
<dd>
テスト1の内容
</dd>
</dl>
</div>
<div class="jobHome jobHomeRight">
<div class="entryTitle">
<h3>テスト2</h3>
</div>
<dl>
<dt>テストタイトル2</dt>
<dd>
テスト2の内容
</dd>
</dl>
</div>
</div>
<div class="entryBody">
<div class="jobHome">
<div class="entryTitle">
<h3>テスト3</h3>
</div>
<dl>
<dt>テストタイトル3</dt>
<dd>
テスト3の内容
</dd>
</dl>
</div>
<div class="jobHome jobHomeRight">
<div class="entryTitle">
<h3>テスト4</h3>
</div>
<dl>
<dt>テストタイトル4</dt>
<dd>
テスト4の内容
</dd>
</dl>
</div>
</div>
<div class="entryBody">
<div class="jobHome">
<div class="entryTitle">
<h3>テスト5</h3>
</div>
<dl>
<dt>テストタイトル5</dt>
<dd>
テスト5の内容
</dd>
</dl>
</div>
<div class="jobHome jobHomeRight">
<div class="entryTitle">
<h3>テスト6</h3>
</div>
<dl>
<dt>テストタイトル6</dt>
<dd>
テスト6の内容
</dd>
</dl>
</div>
</div>
<div class="entryBottom">-</div>
</div>
というhtmlをシャッフルして表示する場合を考えます。
jquery.shuffle.jsに以下を追加します。
------------------------------------------
$(document).ready(function(){
$('div.jobHome:odd').removeClass('jobHomeRight');
$("div.jobHome").unwrap();
$("div.jobHome").wrapAll('<div id=\"jobPickupShuffle\"></div>');
// ピックアップをシャッフル
$('#jobPickupShuffle').shuffle();
var classnumber = '';
$("div.jobHome").each(function(i){
classnumber = Math.floor(i/2);
$(this).addClass("class" + classnumber);
});
for(i = 0; i < classnumber+1; i++){
$("div.class" + i).wrapAll('<div class=\"entryBody\">');
$("div.jobHome").removeClass("class" + i);
};
$('div.jobHome:odd').addClass('jobHomeRight');
});
------------------------------------------
【解説】
このソースは
#jobPickUpHome
div.entryTop
div.entryBody
div.jobHome
div.jobHome jobHomeRight
<div id="jobPickUpHome" class="entryFrame">
<div class="entryTop">-</div>
<div class="entryBody">
<div class="jobHome">
<div class="entryTitle">
<h3>テスト1</h3>
</div>
<dl>
<dt>テストタイトル1</dt>
<dd>
テスト1の内容
</dd>
</dl>
</div>
<div class="jobHome jobHomeRight">
<div class="entryTitle">
<h3>テスト2</h3>
</div>
<dl>
<dt>テストタイトル2</dt>
<dd>
テスト2の内容
</dd>
</dl>
</div>
</div>
<div class="entryBody">
<div class="jobHome">
<div class="entryTitle">
<h3>テスト3</h3>
</div>
<dl>
<dt>テストタイトル3</dt>
<dd>
テスト3の内容
</dd>
</dl>
</div>
<div class="jobHome jobHomeRight">
<div class="entryTitle">
<h3>テスト4</h3>
</div>
<dl>
<dt>テストタイトル4</dt>
<dd>
テスト4の内容
</dd>
</dl>
</div>
</div>
<div class="entryBody">
<div class="jobHome">
<div class="entryTitle">
<h3>テスト5</h3>
</div>
<dl>
<dt>テストタイトル5</dt>
<dd>
テスト5の内容
</dd>
</dl>
</div>
<div class="jobHome jobHomeRight">
<div class="entryTitle">
<h3>テスト6</h3>
</div>
<dl>
<dt>テストタイトル6</dt>
<dd>
テスト6の内容
</dd>
</dl>
</div>
</div>
<div class="entryBottom">-</div>
</div>
というhtmlをシャッフルして表示する場合を考えます。
jquery.shuffle.jsに以下を追加します。
------------------------------------------
$(document).ready(function(){
$('div.jobHome:odd').removeClass('jobHomeRight');
$("div.jobHome").unwrap();
$("div.jobHome").wrapAll('<div id=\"jobPickupShuffle\"></div>');
// ピックアップをシャッフル
$('#jobPickupShuffle').shuffle();
var classnumber = '';
$("div.jobHome").each(function(i){
classnumber = Math.floor(i/2);
$(this).addClass("class" + classnumber);
});
for(i = 0; i < classnumber+1; i++){
$("div.class" + i).wrapAll('<div class=\"entryBody\">');
$("div.jobHome").removeClass("class" + i);
};
$('div.jobHome:odd').addClass('jobHomeRight');
});
------------------------------------------
【解説】
このソースは
#jobPickUpHome
div.entryTop
div.entryBody
div.jobHome
div.jobHome jobHomeRight
div.entryBody
div.jobHome
div.jobHome jobHomeRight
div.entryBody
div.jobHome
div.jobHome jobHomeRight
div.entryBottom
という構造をしています。
シャッフルしたいのは、各div.jobHome要素です。
シャッフルにはjquery.shuffle.jsを使います。
このjqueryを使うために、シャッフルしたい要素を同じ形の記述にし、シャッフルし、元の構造に戻すという作業をjqueryでやります。
1.div.jobHomeのクラス:jobHomeRightを削除
$('div.jobHome:odd').removeClass('jobHomeRight');
2.2つの要素を囲んでいるdiv.dntryBodyを削除
$("div.jobHome").unwrap();
3.シャッフルする要素を指定するために、div.jobHomeを要素で囲む
div.jobHomeの要素すべてを<div #jobPickupShuffle></div>で囲みます。
$("div.jobHome").wrapAll('<div id=\"jobPickupShuffle\"></div>');
4.シャッフルします。
$('#jobPickupShuffle').shuffle();
5.もとの構造に戻すために、上から2つずつの組にするようクラスを付けます。
var classnumber = '';
$("div.jobHome").each(function(i){
classnumber = Math.floor(i/2);
$(this).addClass("class" + classnumber);
});
6.クラス名ごとにdiv.entryBodyで囲みます。
for(i = 0; i < classnumber+1; i++){
$("div.class" + i).wrapAll('<div class=\"entryBody\">');
$("div.jobHome").removeClass("class" + i);
};
7.もとあったクラスを付け直します。
$('div.jobHome:odd').addClass('jobHomeRight');
書いてみたら簡単なのですが、これができるまでにどれだけの時間を費やしたか…
div.jobHome
div.jobHome jobHomeRight
div.entryBody
div.jobHome
div.jobHome jobHomeRight
div.entryBottom
という構造をしています。
シャッフルしたいのは、各div.jobHome要素です。
シャッフルにはjquery.shuffle.jsを使います。
このjqueryを使うために、シャッフルしたい要素を同じ形の記述にし、シャッフルし、元の構造に戻すという作業をjqueryでやります。
1.div.jobHomeのクラス:jobHomeRightを削除
$('div.jobHome:odd').removeClass('jobHomeRight');
2.2つの要素を囲んでいるdiv.dntryBodyを削除
$("div.jobHome").unwrap();
3.シャッフルする要素を指定するために、div.jobHomeを要素で囲む
div.jobHomeの要素すべてを<div #jobPickupShuffle></div>で囲みます。
$("div.jobHome").wrapAll('<div id=\"jobPickupShuffle\"></div>');
4.シャッフルします。
$('#jobPickupShuffle').shuffle();
5.もとの構造に戻すために、上から2つずつの組にするようクラスを付けます。
var classnumber = '';
$("div.jobHome").each(function(i){
classnumber = Math.floor(i/2);
$(this).addClass("class" + classnumber);
});
6.クラス名ごとにdiv.entryBodyで囲みます。
for(i = 0; i < classnumber+1; i++){
$("div.class" + i).wrapAll('<div class=\"entryBody\">');
$("div.jobHome").removeClass("class" + i);
};
7.もとあったクラスを付け直します。
$('div.jobHome:odd').addClass('jobHomeRight');
書いてみたら簡単なのですが、これができるまでにどれだけの時間を費やしたか…
Posted by スポンジボブ at 12:32│Comments(0)│jquery
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
コメントフォーム