PPPPPRIQIA Press (プププププリッキアプレス)

by 有限会社プリッキア

web・ホームページ・モバイルサイト制作の横浜にある制作会社PRIQIA(プリッキア)のスタッフブログです。

JavaScriptにハマってます(悪い意味で)

Author: たかおファン Categories: JavaScript

お世話になっております、たかおファンです。

最近はJavaとは全然違うくせに名前の似ているJavaScriptの開発で四苦八苦しました。
この苦行を通して得たノウハウをざっと紹介しようかと。
主にjQuery使ってるのでそれ前提にはなしますよ、と。

イベントリスナのthisをめぐる物語

クリックとかのイベントにリスナ関数を設定するじゃないですか~

function Hoge() {
	this.ten = 100;
	$('#hoge').click(function(){
		alert(this.ten);
	});
}

なんかうっかりこんなコード書いちゃって、100が表示されると思うじゃないですか。
しかし、イベントリスナなんでthisの参照先はHogeじゃ無くて、#hogeのオブジェクトなんですよね。
イベントリスナでHogeを参照したい~~ってどうしても思ったときにひらめいた姑息な手段。

function Hoge() {
	this.ten = 100;
	var self = this;
	$('#hoge').click(function(){
		alert(self.ten);
	});
}

thisの参照をselfにコピーすればいいとか。
でもなんだかjQuery1.4ではこれを解決するproxyなる新機能が現れたとか。。。

idで勝手にグローバル変数になるIEのステキ仕様

PHPでいうregister_globalsみたいな厄介な仕様。

<div id="hoge">Hoge!</div>
hoge = new Hoge();

こうやるとIEでは怒られます。divのidと変数名が被ってしまったためです。
この場合IEではhogeという変数はdivオブジェクトを指しています。なんで、だめらしいです。明示的にvar付けて別変数として定義するか、なんらかの対策が必要だそうで。

うっかり落とし穴!jQuery.wrap()に気をつけろ!

$("<span>hoge</span>").wrap('<p></p>');

ぐぎゃーーー!いくらやってもpタグで囲われないっっっ!!
。。。ともがいていましたが、実はwrap()はDOMツリー上に存在する要素にしか使えないそうです。つまり、

$("<span>hoge</span>").appendTo("#hoge").wrap('<p></p>');

ならばうまくいくとか。

とりあえずこんだけ!

本日の初音ミク

はちゅねとユカイな仲間達

初音ミク。。。もとい「はちゅねミク」とユカイな仲間達(ナイツとVF-25S)です。
ワタクシの机を守護する者たちであります。

そういえば今日は3月9日で「ミクの日」つまり初音ミクの日だそうで。感謝祭ソロコンサートするそうです。ZeppTokyoとか、どんだけ。。。

「初音ミク・ソロコンサート~こんばんは、初音ミクです。~」WEB LIVE – ニコニコ生放送

ニコニコ動画でも生放送するそうですが、1500円とか高すぎでしょ。
39曲とかすさまじい曲数ですが、どうなることやら。

タグ:

Leave a Comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes