jQuery プラグイン Flip! を使用してモザイク タイルの壁を作成しています。(http://lab.smashup.it/flip/) を使用して、各タイルにより多くのコンテンツを公開します。私は JavaScript や jQuery の第一人者ではありませんが、IE7+、FF、Chrome、および Safari で完全に動作しています (自責の念)。ただし、より少ない JS で実行できることはわかっているので、その方法を理解したいと思います。
次のマークアップを使用して各タイルを作成しています。
<li id="tileID" class="tile">Default visible content
<div id="tileID_flipped" class="hiddenContent">
Content made visible when tile flips.
</div>
</li>
「デフォルトの可視コンテンツ」というテキストは、デフォルトでタイル内に表示されるものです(当然)。中のコンテンツ<div id="tileID_flipped" class="hiddenContent">
は、タイルが反転されたときに表示されるものです。
$(document).ready(function() {
各タイル フリップを機能させるために、次の JavaScript を使用しています。
$('#tileID').delegate('a', 'click', function(e){ e.stopImmediatePropagation(); })
.toggle(function(){
$(this).flip({
direction:'rl',
color: "#b91317",
content: $("#tileID_flipped"),
speed: 200
})
},
function() {
$(this).revertFlip()
}
);
e.stopImmediatePropagation()
参考までに、ユーザーがタイル内のリンクをクリックしたときに反転イベントがトリガーされないようにするために、このソリューションを使用しています。このサイトでその解決策を見つけました。
問題は、作成するタイルごとにこのスクリプトを繰り返すことです。ユニークな属性は だけなので、これはもったいないと思いますcontent: $(selector)
。
次のコードを使用して、クラス「タイル」を持つすべての要素に反転イベントを適用できました。
$('.tile').delegate('a', 'click', function(e){ e.stopImmediatePropagation(); })
.toggle(function(){
$(this).flip({
direction:'rl',
color: "#b91317",
speed: 200
})
},
function() {
$(this).revertFlip()
}
);
これを行ったので、タイル固有のコンテンツを各タイルに「注入」するにはどうすればよいでしょうか?
PS jQuery (1.6.4)、jQuery UI (1.7.2)、jQuery フリップを使用しています。