clearife 0.1
http://sideroad.secret.jp/clearife/
GTD系システムをいよいよ公開。
まだ実験的だし、挙動が怪しいし、IE未対応という暴挙なので
バージョン0.1という幕開け(ΦωΦ)
jQuery Side Bar Plugin 1.0
サイドバーにメニューを表示させたい。。。
ということで
jQuery Side Bar Pluginを作ってみた。
jQuery Floating Message Plugin1.0
簡易的なメッセージ表示させたい。。。
ということで
jQuery Floating Message Pluginを作ってみた。
jQuery Text Animation Plugin1.1
Demoサイト作成しました。
jQuery Text Animation Plugin
IEだと重すぎて固まる。。。orz
抜本的対策を考えねば(ーΩー )
Change log
- Stepの追加
- Highlightの追加
- Jumpの追加
- Rollのオプション追加
- 内部ロジックの改変
jQueryUI - Datepicker Tip
jQueryUI DatepickerのTipです。
全てのdatepickerクラスの要素の後ろに
今日の日付を設定する「Today」ボタンと
値を空にする「Clear」ボタンを加える。
もっと良い書き方ありそうデツ。。。
$(".datepicker").not(".hasDatepicker")
.each(function(){
var datepicker = $(this);
$("<input type='button' value='Clear' />").click(function(){
datepicker.val("");
}).insertAfter(datepicker);
$("<input type='button' value='Today' />").click(function(){
datepicker.datepicker("setDate",new Date());
}).insertAfter(datepicker);
})
.datepicker() //好みのオプションをドウゾ
.datepicker("setDate",new Date());
jQueryでディープコピー
javascriptのオブジェクトの複製を
で空オブジェクトにコピーしてましたが、
Object.clone = function(source) {
return $.extend({},source);
}
このままだとシャローコピーだったのでハマッタヨ。
ガシカーシ、jQueryのソース眺めてたら。。。オッ
$.extendの一つ目の引数にtrueを追加しとくとディープコピーになるっぽい。
ということで、
Shallow Clone
Object.shallowCopy = function(source) {
return $.extend({},source);
}var a = {a:{a:1},b:{a:1}};
var b = Object.shallowCopy(a);
b.a.a = 2;
window.alert(a.a.a); //2
window.alert(b.a.a); //2
Deep Clone
Object.deepCopy= function(source) {
return $.extend(true,{},source);
}var a = {a:{a:1},b:{a:1}};
var b = Object.deepCopy(a);
b.a.a = 2;
window.alert(a.a.a); //1
window.alert(b.a.a); //2
せっかくなんでjQuery用に改良。
//object clone
(function($){
$.cloneObject = function(source,isDeep) {
if(isDeep){
return $.extend(true,{},source);
}
return $.extend({},source);
}
})(jQuery);//使い方
var a = {a:{a:1},b:{a:1}};
var b = $.cloneObject(a); //シャローコピーで複製
b.a.a = 2;
window.alert(a.a.a); //2
window.alert(b.a.a); //2
var c = {a:{a:1},b:{a:1}};
var d = $.cloneObject(c,true); //引数にtrueを追加するとディープコピーで複製
d.a.a = 2;
window.alert(c.a.a); //1
window.alert(d.a.a); //2
jQuery冥利に尽きますな(ΦωΦ)
ajaxFileUploadと戯れる
jQueryプラグインのajaxfileuploadを使ってみた。
画面遷移を行うことなくファイルをアップロードできるという優れもの。
ファイルサイズが軽いので中身をのぞいてみたらコンナ仕組み。
- アップロード用Formを生成し、アップロードするファイル要素をアップロード用Formにコピーする。
- このときコピーするファイルのIDはDate().getTime()により生成し、一意なIDを割り当てる。
- アップロード用Formの表示位置を top:-1200px , left:-1200px , position:absolute で見えないよう設定し、body要素に追加する。
- 画面遷移用Iframeを生成し、表示位置を top:-1000px , left:-1000px で見えないよう設定し、body要素に追加する。
- Formのtarget属性に画面遷移用Iframeを設定することでメイン画面ではなくIframeを画面遷移させて回避をしてるっぽい。
- アップロード成功時のコールバック関数が存在する場合、レスポンスのデータとステータスを引数として実行する。
- アップロード失敗時のコールバック関数が存在する場合、レスポンスのデータとステータスとエラーオブジェクトを引数として実行する。
フムフム。ハック感がプンプンしますね。
このままでも使えるけど、フォームに他の値を追加シターイ。ってことで改造。
- ajaxFileUploadをチュイーンする。
//Before この行を
var form = jQuery.createUploadForm(id, s.fileElementId);//After このように
var form = jQuery.createUploadForm(id, s.fileElementId,s.params);
- createUploadFormをチュイーンする。
//引数を
createUploadForm: function(id, fileElementId)//フヤース
createUploadForm: function(id, fileElementId,params)
//この行の下に
$(oldElement).appendTo(form);//以下を追加
for(var param in params) {
var e = $('<input type="hidden" name="'+param+'" value="'+params[param]+'" />');
$(e).appendTo(form);
}
- ajaxfileuploadを呼び出す引数にparamsオブジェクトを追加する
コンナカンジ
$.ajaxFileUpload({
url:'./cgi-bin/hogehoge.cgi',
secureuri:false,
fileElementId:"fileA",
dataType: 'json',
params : {
id : "hogehoge",
name : "fugafuga"
},
error: function (data, status, e){
alert(e);
},
success : function(data, status){
alert("フッフーイ");
}
})