2009年9月26日土曜日

Simple@Idx 2009/9/26

作業ログ
-FoxServアンインストール → Xamppインストール
-jQueryでformUpDn(オブジェクト化)



◆FoxServアンインストール → Xamppインストール

今のラップトップはFoxServで環境をインストールしていて、PHP4.2.2が入っている。これだとsymfonyは動かないので、新しくXamppでインストール。バージョンは1.7.2。

が、MySQLをサービスとしてインストールに失敗。

原因は・・・FoxServでインストールした古いMySQLのサービスの残骸がレジストリに残っていた様子。久々にregeditを立ち上げ。適当に怪しそうな場所を見てみると・・・
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL

を発見。
削除して・・・大丈夫だよね???
不安なのでググッてみたが、よくわからず。まぁいいや。
削除して、再起動して、動いているからよし。

これでXamppが動いた。

この後、Eclipseもダウンロード→インストール→PHPプロジェクトの作成、でプロジェクトを開始しようとしたが、既存のフォルダを開けず。

めげたので、symfonyは、ひとまずやめ。

◆jQueryでformUpDn

前回作成したjQueryをOOPにしてみる。
var formUpDn = function () { ... }
formUpDn.prototype.down = function() { ... }
と新しいオブジェクトとメソードを定義して、オブジェクト内で、
// UPキーが押された場合の処理。
$(this.jFormElem).bind( 'keydown', 'up', this.down );
とやっても、this.downなんて知りませんと起こられる。
肝心のjQueryのbind内で「this」が変わっている。

JavaScriptの特徴で、イベント発生時のスコープは、イベントが発生したDOMオブジェクトに設定されるらしい。つまりthis.downのthisはフォームの要素になってしまう、ということ(と理解してます)。

◆jQueryにスコープを追加する

どうするの?
と思いつつググルと解決法があった。

下記の「scope」という関数を追加して、不思議な呼び方をすると動いた。
jQuery.scope = function( target, func ) {
return function() {
return func.apply( target, arguments );
}
};

formUpDn.prototype.bind = function()
{
// DOWNキーが押された場合の処理。
var that = this;
$(this.jFormElem).bind( 'keydown', 'down', jQuery.scope( this, that.down ) );
}

これで、キーが押されると、formUpDnオブジェクトのdownメソードを呼び出すようになりました。
が、まだ動いてません。また次回の続きに。

0 件のコメント: