JavaScript

連想配列をCakePHPからjQueryに渡して展開

by yumi. 0 Comments

配列 $arr をCakePHPからjQuery に渡すには
Controllerにて

$this->set('arr', $arr);

Viewにて(※ ViewはHTMLでlayoutしているとして)

$arr = json_encode($arr);
$this->addScript($html->scriptBlock('
var arr = '.$arr.';
$.each(arr,function(k,v){
  //お好きに
});

で良いらしい。json_encode()を思い出せなかったのでメモ。

あ、それか

Controllerにて

$this->set('arr', json_encode($arr));

でも。

jQueryで配置された複数の画像をランダムにパラパラと表示する

by yumi. 0 Comments

最近書いたjQueryのメモです。

配置された複数の画像をランダムにパラパラ表示する、というもの。

参考にさせていただいた
ひとつめは、jQueryのがらぽん。
jQuery: Shuffle Plugin
配列にも要素にも適応できるのが素敵。

ふたつめは、jQuery 1.4のdelayについて。
jQueryメモ delayメソッドでずらしてみる – lovelog || Loveness×Zeroless

んでこんなのができました。
ul.images 以下に9枚の画像があるケース。

var arr = [1,2,3,4,5,6,7,8,9];
arr = $.shuffle(arr);//Shuffle Pluginを使ってシャッフル

jQuery(document).bind("ready", function(){
  $('ul.images li').hide();
  $(arr).each(function(k,n){
    var num = k * 500;
    $("ul.images li:nth-child(" + n + ")").delay(num).fadeIn(800);
  });
});

って、delay超便利!jQuery1.4で使えます。

IEの6,7,8を判別するJavascript

by yumi. 1 Comment

追記@2010/11/18
コメント頂いていますが、Javascript でブラウザ判定 IE 6,7,8 と その他のブラウザ | perlとMysqlと鯖管メモ他ぁにて改良してくださっているのでそちらをご参照くださいませ。(適当コードで申し訳ありませんでした・・・)

IE8になっても表示が微妙なケースもたまにあったりするので
IE6〜8の判別を調べてみた。
結果、これが(ちゃんと動くなら)一番楽チンなのかな?
(※ まだちゃんと動作チェックしてないです。)

if (typeof document.body.style.maxHeight != "undefined") {
  	if (document.documentMode >= 8) {
	}else {
		// IE8
	}else {
  		//IE7, IE8(IE7 mode)
	}
} else {
	// IE6, older browsers
}

IE8のIE7モードって、IE7で動くんだから判別する必要無いよね、と思ったんだがどうだろう。
今のところ、IE8だけに何かしなきゃいけない状況に陥ったことは無いので(IE6になら嫌ってほどありますが)、いまいちこのモードの話は身につまされないのです。
とか言ってると足元すくわれるかなあ。

参照: