jQuery live関数 サポートしていないイベント

jQueryのlive関数で指定できるイベントを勘違いしていたのでメモ。

live(type, fn)

jQuery 1.3より実装。
イベントに対してハンドラを登録します。
登録されたイベントは、現在および将来的にも、セレクタにマッチする全ての要素に適用されます。
カスタムイベントに対してbindすることも可能です。

この関数で指定できるイベントは以下

  • click
  • dblclick
  • mousedown
  • mouseup
  • mousemove
  • mouseover
  • mouseout
  • keydown
  • keypress
  • keyup

もっと読む jQuery live関数 サポートしていないイベント

jQuery inputのデフォルト値を変更する。

ちょっとはまったので記録

以下のようにvalue値がすでに設定されている場合には

<input type="hidden" name="hoge" value="moge" id="fuga"/>

以下のようにvalで値を詰めてもvalueの値が変わらなかった。

$("#fuga").val('buzz');

以下のようにするとできた。

$("#fuga")..attr("defaultValue", 'buzz')

defaultvalue属性を知らなかった・・・。

参考:フォーカスを当てるとデフォルト文字列が消えるinput text (jQuery編)

jQuery toggle()で表示、非表示

とりあえず今日やったことをば。

jQueryのtoggleで表示、非表示する例。

これを↓

こうしたりする↓

※モザイクはなんとなく。

HTMLのソースはこれ

<p id="toggle_bar" class="tl"><span id="icon" class="strong fonts-02">+</span><a href="#">××××××××××××××××××××××</a></p>

<div id="search_area" class="search-select clearfix">
<ul>
	<li><input id="1" class="check01" name="tag" type="checkbox" value="1" /><label for="1">××××××</label></li>
	<li><input id="2" class="check01" name="tag" type="checkbox" value="2" /><label for="2">××××××</label></li>
	<li><input id="3" class="check01" name="tag" type="checkbox" value="3" /><label for="3">××××××</label></li>
	<li><input id="4" class="check01" name="tag" type="checkbox" value="4" /><label for="4">××××××</label></li>
	<li><input id="5" class="check01" name="tag" type="checkbox" value="5" /><label for="5">××××××</label></li>
	<li><input id="6" class="check01" name="tag" type="checkbox" value="6" /><label for="6">××××××</label></li>
	<li><input id="7" class="check01" name="tag" type="checkbox" value="7" /><label for="7">××××××</label></li>
	<li><input id="8" class="check01" name="tag" type="checkbox" value="8" /><label for="8">××××××</label></li>
	<li><input id="9" class="check01" name="tag" type="checkbox" value="9" /><label for="9">××××××</label></li>
	<li><input id="10" class="check01" name="tag" type="checkbox" value="10" /><label for="10">××××××</label></li>
	<li><input id="11" class="check01" name="tag" type="checkbox" value="11" /><label for="11">××××××</label></li>
	<li><input id="12" class="check01" name="tag" type="checkbox" value="12" /><label for="12">××××××</label></li>
	<li><input id="13" class="check01" name="tag" type="checkbox" value="13" /><label for="13">××××××</label></li>
	<li><input id="21" class="check01" name="tag" type="checkbox" value="21" /><label for="21">××××××</label></li>
	<li><input id="30" class="check01" name="tag" type="checkbox" value="30" /><label for="30">××××××</label></li>
	<li><input id="31" class="check01" name="tag" type="checkbox" value="31" /><label for="31">××××××</label></li>
	<li><input id="34" class="check01" name="tag" type="checkbox" value="34" /><label for="34">××××××</label></li>
	<li><input id="35" class="check01" name="tag" type="checkbox" value="35" /><label for="35">××××××</label></li>
	<li><input id="36" class="check01" name="tag" type="checkbox" value="36" /><label for="36">××××××</label></li>
	<li><input id="38" class="check01" name="tag" type="checkbox" value="38" /><label for="38">××××××</label></li>
</ul>
</div>

jsはこれ

$("#search_area").css("display", "none");
$('#toggle_bar').click(function(){
    $('#search_area').toggle();
    var lab = $('#icon').html();
    if(lab == '-') {
        $('#icon').html('+');
    } else {
        $('#icon').html('-');
    }
});

簡単っすな。。表示を無理矢理変えてるところがイケてないけど。。

参考
toggle()

jQueryのtoggleメソッドって気持ちいい

PHP smartyで変数の修飾子を使う

仕様変更でやむなくsmarty内でpreg_replace的なことをしないと
いけなくなったけどやり方を知らなかったのでググッた結果。

Smarty内でPHP関数を使う

Chapter 5. 変数の修飾子

上記を参考にして書いたのがこちら↓

{if strpos($item, '-new') !== false }
    {assign var="new_flag" value="1"}
    {assign var="item" value=$item|regex_replace:"/-new/":""}
{else}
    {assign var="new_flag" value="0"}
{/if}

strpos — 文字列が最初に現れる場所を見つける

上記を利用して$itemに’-new’という文字列が含まれていなかったらifへ、あったらelseへ。
‘-new’が含まれている場合は以下で’-new’を取り除き再び$itemに値を入れ直す。

{assign var="item" value=$item|regex_replace:"/-new/":""}

regex_replaceこちらを参照。

今日はこの位で。

jQuery cookieを使ってページの表示履歴を保持する

ページの表示履歴簡易的に取りたいということなのでjQueryを使ってどうやるのか調べてみた。

こちらを参考にしました。
jQueryを使ってクッキーを操作

jquery.cookie.jsを使うらしいのでこちらからダウンロード

自作した外部ファイル

$(function(){
    var COOKIE_NAME = 'test_cookie_name';
    var COOKIE_PATH = '/';

    var page_array = [];
    if($.cookie(COOKIE_NAME)){
        page_array = $.cookie(COOKIE_NAME).split("-");
    }

    // 現在開いているページのファイル名を取得
    var file_url = location.href;
    file_url = file_url.substring(file_url.lastIndexOf("/")+1,file_url.length);
    file_url = file_url.substring(0,file_url.indexOf("."));

    if( $.inArray(file_url, page_array) == -1) {
        // cookieから取得した配列内に存在しない場合は追加
        page_array.push(file_url);
    }

    // パス(/)や有効期限(3日)を指定する
    var date = new Date();
    date.setTime(date.getTime() + ( 1000 * 60 * 60 * 24 * 3 ));

    // とりあえず"-"区切りで連結してcookieに格納
    $.cookie(COOKIE_NAME, page_array.join("-"), { path: COOKIE_PATH, expires: date });
})

履歴を取得したいページでの読込み例(ここでは自作の外部ファイルをhistory_sample.jsとしている)

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript" src="./jquery.cookie.js"></script>
<script type="text/javascript" src="./history_sample.js"></script>

cookie_sample.html
cookie_sample2.html
cookie_sample3.html
とかのファイルに仕掛けた場合、3ファイルをブラウザで開いたあとはcookiに以下のような
値がはいります。

データの保存方法が・・・とかありますがとりあえずサンプルなのでこれで。

lftp ミラーリング用のスクリプト

今日は体調が悪いので参考にしたサイトをとりあえず貼って済ませる。。

lftpミラーリングスクリプト

この辺を参考に。。

lftp <<-  END
open -u $USERID,$PASSWAD $FTPSITE
set ftp:list-options -a
lcd ~/public_html/$DIRNAME
cd /$DIRNAME
mirror -Rev
END

lftpは前回と内容が同じでもディレクトリごとにチェックに行くのでディレクトリ
の数が多いとそれなりに時間がかかるのでできるだけピンポイントにミラーする
ように修正を行う必要があったので・・・。

他にはこの辺も参考にした。
http://qz.tsugumi.org/man_lftp.html

blog.paz-para.com

rsync使いたい。。