Kinopyo's Blog

I love this game.

アーカイブ

Posts Tagged ‘Snippet’

Flexでシステムクリップボードに内容をコピーするには

2010年05月06日

テキストをクリップボードにコピーするコードです。

System.setClipboardの第一引数にテキストを渡せばOKです。

System.setClipboard(text);

ここにいいDEMOがあります。

jspにメソッドを定義するには

<&!~&>宣言部でメソッドを定義することができます。

<%!
private String myMethod (String str) {
    // some code
    return "ok";
}
%>

参考サイトはこちら:

J2EE講座 [ JSPの基本構文 ]

jQuery siblings()とchildren()の内部ソースを見た

2010年04月19日

よく出来ていると思います。

勉強になります。

siblings: function( elem ) {
	return jQuery.sibling( elem.parentNode.firstChild, elem );
},
children: function( elem ) {
	return jQuery.sibling( elem.firstChild );
},

そしてjQuery.sibling()の中身です!

nodeTypeが1の場合はelementノードの意味です。

nはループに使われて、elemは除外する要素です。

例えばsiblings()の場合は自分自身を除外しています。

for文の書き方も覚えとこう、、

javaでのIteratorのhasNext()関数みたいな動きをしていますね。


	sibling: function( n, elem ) {
		var r = [];

		for ( ; n; n = n.nextSibling ) {
			if ( n.nodeType === 1 && n !== elem ) {
				r.push( n );
			}
		}

		return r;
	}

スクロールを最下部に移動するJavascript

2010年03月02日

スクロールバーを最下部に移動するJavascriptです。

普通のJavascriptで書くと

function go_bottom(targetId){

    var obj = document.getElementById(targetId);

    if(!obj) return;

    obj.scrollTop = obj.scrollHeight;
}

完全にjQueryで書くとこんな感じ

function go_bottom(targetId){

   var $obj = $("#" + targetId);

    if($obj.length == 0) return;

    $obj.scrollTop($obj[0].scrollHeight);
}

これ以外はhiddenのinput項目を最下部に置いといて、

それをfocusするような技もありけど、、

jQuery $.inArray()関数の戻り値に注意を

2010年01月15日

$.inArray(value, array)

指定した値が配列中にあれば、そのインデックスを返します。

配列に存在しなければ戻り値は”-1″になりますので注意してください。


var array = ["a", "b", "c"];

if ($.inArray("d", array) == -1) {

    // d is not in array

}

下記のコードは間違いですよ。。。

if ($.inArray("d", array)) {}

$.isArray(obj)

パラメータで渡された値が配列であるかどうかを判別します。

戻り値はtrueかfalseです。

jQueryで右クリックを無効にする方法

2010年01月07日

jQueryでマウス右クリックを無効にする方法です。

“contextmenu”のイベントはjQueryのドキュメントには乗ってませんが、

それのハンドラでreturn falseすることで簡単に実現できます。


$("document").bind("contextmenu", function(){

    return false;

});

jQuery #idでは一つし要素か選択できない、同じIDを持つ複数要素を選択するには

2009年12月20日

そもそもIDというのは一つのページ内でユニークなはずですが、

何らかの理由で同じIDを持つ形になったとしましょう。

その場合普通のjQueryの#idセレクタでは一つの要素(順番的に最初に合致した要素)しか選択できません。

そこで[id=xx]の形で属性フィルタで全ての選択することができます。

以下サンプルコードです。


$("#foo").css("background-color","gray");

$("[id=bar]").css("background-color","green");



use #id selector






use attribute selector [id=xx]




jQuerySelectorByID

テキストボックスの文字列を選択(色逆転)、取り消すには

2009年12月10日

テキストボックスの文字を選択された状態にする方法とその解除方法です。

IEの場合selectボックスにselect()関数を使うとJavaScriptエラーになります。

Firefoxは大丈夫です。


function selectFocusText(element){

	// for IE

	if (element.nodeName == "SELECT") return;

	element.select();

};

function unselectFocusText(){

	// for IE

	if (document.selection) {

		document.selection.empty();

	// for Firefox

	} else if (window.getSelection) {

		window.getSelection().removeAllRanges();

	}

};

jQueryでoptionが一つのSelectボックスをラベル表示

2009年11月28日

htmlにoptionが一つしかないselectboxがあるとします。

このようなselectを非表示にし、そのテキストラベルで表示させたいのもありですね。



jQuery文はこれ:

//:only-childフィルタで子要素が一つしかない要素を選択
var $target = $("select :only-child");

$.each($target, function(index, item) {

	// spanのhtmlを構築
	var span = '' + $(this).text() + '';

	// thisはoptionを指しているため、そのparentのselect要素を非表示
	// 構築したspanを挿入
	$(this).parent().hide().after(span);

});

さらにブランクの要素をフィルタ

selectボックスの先頭がblankのケースが結構あると思います。

その場合はラベル表示させたくないです。

なのでそれをフィルタするには、以下のようにfilter()を使います。

var $target = $("select :only-child").filter(function(index) {

	return $.trim($(this).text()).length != 0;

});


$.trim()の1000倍速い方法でブランクを検出

jQueryにはblankを検出するメソッドがないため、上記のソースコードでは

$.trim()を利用して判断しています。

しかしこの$.trim()は遅いとの報告がありました。

そこでblankのテキストを検出するためのメソッドも提供されました。

$.trim()が2000msかかったものがこれだと0.5msになったようです。

blank: function( text ) {
	return !text || !/\S/.test(text);
}

興味のある方はこの記事を参照してください。英語のサイトです。

Zipalong Blog » Blog Archive » jQuery: x1000 faster test for blank strings (on large strings)

jQueryのtoggle(switch)が大変便利、条件文5行のコードが1行に短縮!

2009年11月27日

toggle()の普通の使い方は多分皆さんご存知だと思います。

該当要素をクリックするたびに表示/非表示を切り替えます。

f:id:kinopyo:20091128134759g:image:right

今日紹介するのはこのswitchパラメータ付のtoggleです。

swtich文を評価しtrueであれば要素を表示、falseであれば非表示です。

これで下記のコードがこのswtich付きのtoggle文なら一行ですみます。

if (name == "kinopyo") {
	$("p").show();
} else {
	$("p").hide();
}

これがこうなります。

$("p").toggle(name == "kinopyo");

どうですか?すごくないですか?

まさにjQueryの「The Write Less, Do More」ですよね。

ただし判断の条件文が行の最後になるので、

読みやすさは多少落ちると思います。


ちなみに、Googleの単語とよく似ているので、ついついtoogleと書いちゃいますorz

Get Adobe Flash playerPlugin by wpburn.com wordpress themes