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

by 有限会社プリッキア

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

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

投稿者: たかおファンカテゴリ: 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曲とかすさまじい曲数ですが、どうなることやら。

jQueryにお世話になっております

投稿者: nakageカテゴリ: 未分類 | タグ:

なんだかんだで長いテキストが適当に折り返してくれない。あれ?IEはなんとかなったものの今度はFirefoxの表示が???
渋々”word-break:break-all;  Firefox” で検索し続けたわけですが、なんともしっくりくる対応方法も見つからず、どうしようかなぁ。と思いきや隣の席から助けのURLが!

jQueryで長いURLやメールアドレスを折り返して表示する
http://cl.pocari.org/2008-02-03-1.html

Firefox 3 の修正内容のご紹介 その3 — URLも改行されるように
http://mozilla.jp/blog/entry/1985/

参考にさせて頂き、なんとかなりました/

word-break:break-all; にとらわれすぎてた自分に反省。
最近本当にあらゆる場面でjQueryにお世話になっております。というかこの場合、jQueryと、探し物の早い隣の席の方にお世話になりました。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes