Kinopyo Blog

プログラマとしてRuby, Rails, iPhone, iPad,Macなどなどと向き合う日々のログポース

Posts Tagged ‘Tips’

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

2010年01月07日

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

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

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


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

    return false;

});

jQuery APIを一枚の紙にまとめたノート。他にもHTML、CSS、JavaScriptノートが満載

2009年12月27日

jQueryのAPIを一枚の紙にまとめたものです。

ノートはPDFファイルで、ダウンロードすることができます。

jQuery APIノート

jQuery-api-note


作者はMattさんです。ありがとうございました。


他にもHTML、CSS、JavaScript、PHP、Mac、Windows、Photoshop、Browserなどのノートが満載です。

HTML, CSS, PHP, Javascript And More Cheat Sheets

興味のある方は直接作者のサイトを参照してください。

jQuery each()関数内にcontinue/breakを使いたい時は

2009年12月22日

jQueryのeach()は関数のためcontinueやbreakなどのループ制御文は使えません。

グーグル先生に聞いたら代わりの方法が見つかりました。

  • break : return false
  • continue : return true

参考サイト:

jQuery の each() の continue / break は・・・

jQueryの$(expr, context)、今まで気づいてなかったcontextパラメータ

2009年12月10日

今まで平気に$(expression)を使ってきましたが、

この二番目のcontextパラメータでセレクタの範囲を決まることができます。


この関数はjQueryのコア関数で幅広く使われ、

もっとも一般的な使い方はcontextを省略したものでしょう。


$("div")

contextパラメータ

contextが何も指定されなければ、$()関数は現在のHTMLのDOMエレメントを検索する。

逆にDOMエレメントやjQueryオブジェクトなどのcontextが指定されれば、expressionはそのcontextに対して合致するものを捜します。

簡単にいうとfind()関数と似ています。

実践でいうと以下の二つは同じ機能をしています。


$("body").find("div");

$("div,body");

参考サイト

jQuery(expression, context) – jQuery 1.3.2 日本語リファレンス

jQuery逆引きレファレンス、属性&コンテンツ編(@ITより)

2009年11月23日

@IT連載:jQuery逆引きリファレンスの第二回のテーマは属性&コンテンツです。

目次は以下になります。

* 属性値を取得するには?

* 属性値を設定するには?

* 複数の属性値をまとめて設定するには?

* 関数の結果によって動的に属性値を設定するには?

* 属性値を削除するには?

* スタイル・クラスを追加/削除するには?

* スタイル・クラスが適用されているかを判定するには?

* スタイル・クラスの適用/解除を交互に行うには?

* 要素に適用されたスタイル情報を取得するには?

* 要素に特定のスタイルを適用するには?

* 複数のスタイル・プロパティをまとめて設定するには?

* 要素の表示位置を取得するには?

* ページのスクロール位置を取得/設定するには?

* 要素の高さや幅を取得するには?

* 要素の高さや幅を設定するには?

* 要素のテキストを取得するには?

* 要素のテキストを設定するには?

* フォーム要素の値を取得/設定するには?

勉強メモ

text()とhtml()の違い

(1)取得する対象

 要素セット(jQueryオブジェクト)が複数の要素を含んでいる場合、htmlメソッドは先頭要素の内容だけを取得しますが、textメソッドはすべての要素の内容を結合したものを取得します。

(2)取得する内容

 名前のとおり、htmlメソッドは要素の内容をHTML文字列として取得しますが、textメソッドは純粋なテキストだけを取得します。

(3)対応する形式

 textメソッドはHTML/XMLいずれの形式でも動作しますが、htmlメソッドはHTML(XHTMLを含む)形式でしか動作しません。このサンプルでは扱っていませんが、textメソッドをXML形式で利用する方法については、あらためてAjax編で紹介する予定です。

http://www.atmarkit.co.jp/fdotnet/jqueryref/02attribute/attribute_16.html

height(val)、width(val)

引数valには数値、もしくは「em」や「%」などの単位付きの数値を指定できます(単なる数値の場合はピクセル値として認識します)。

要素の高さや幅を取得するには?

- height()、width()、innerHeight()、innerWidth()、outerHeight()、outerWidth()

関数 padding border-width margin
height、width x x x
innerHeight、innerWidth o x x
outerHeight、outerWidth o o x
outerHeight、outerWidth(true o o o


関数の結果によって動的に属性値を設定するには?

- attr(name, fnc) -

コールバック関数の戻り値を用いて設定。

$(function() {
	$('li > img').attr(
			'src',
			function(index) {
				return "http://www.wings.msn.to/books/" + this.id + "/"
						+ this.id + "_logo.jpg";
			});
});


jQuery Tips: live関数はすべてのイベントに有効じゃない、その他…

今までjQueryを使ってきたtipsをメモします。

Tipsの定義とおり知っていればちょっと便利になるけど、

知らなくても特に問題ないですね。

ただしlive関数においてはすべてのイベントに有効じゃないのは

知っておいてほしいです。

live関数

liveはすべてのイベントに対応していない。

サポート

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

非サポート

blur, focus, mouseenter, mouseleave, change, submit


ajax関数のurlパラメータ

AJAXのURLではセレクタも併用できる。セレクタによりあるページの一部だけを読み込むことができる。

こんな形です:”url #some > selector”

デフォルトは”body>*”のセレクタが適用されていますよ。

$("#links").load("/Main_Page #jq-p-Getting-Started li");


:has(selector)フィルタ

:has(selector)は持ってるすべての子要素に対して動作してる

divい対して:hasフィルタを使うと、p要素までフィルタが走る

span ... p..

属性フィルタの組み合わせ

[filter][filter]……のように複数を連続して記述することもできます。この場合、すべての属性フィルタに合致する要素だけが取り出されます。

htmlの組み立て

ハードコードで書く
$(select).append("


");
jQueryの関数を用いて書く
$(select).append($('

このほうが簡潔だと思いますが、、

:nth-child

:nth-childフィルタによりn行おきに子要素を取得することができる

例えば、2、5、8行目……のように3行おきに(「3で割ったときの余りが2」番目の)要素を取得したい場合には、以下のように記述できます。

$('ol > li:nth-child(3n + 2)')


validationプラグイン

jQueryのvalidationプラグイン:showErrorを定義するとhighlightとunhighlightとは実行しない

そもそもshowErrorはエラーをどう表示するかを決めるための高レベルの関数なので、

簡略化したhighlightとunhighlightは隠蔽されたっぽいの感じで、完全に実行しません。

jQuery逆引きレファレンス、セレクタ編(@ITより)

2009年11月15日

@IT新しい連載:jQuery逆引きリファレンスが始まりました。

既に一ヶ月前になりますが、

自己テスト用でもいいともいます。

私は自信がない項目が結構ありました。


jQueryで使ったシンタックス英単語は

ほとんど簡単な単語で

ぱっと見たら分かるような気がするけど、

本気で使おうとしたらまたいろいろ調べないと

と感じました。

例えば:containのフィルタにはテキスト(case-sensitive)

しか入りません。

逆に:hasにはセレクタ分が使えるなど

意味合い的には似てますが、

使い方がまったく違うところが

落とし穴だと思います。


以下がセレクタ編のタイトルです。

自信があるのは何項目ですか?

* id値で要素を特定するには?

* タグ名で要素を特定するには?

* スタイル・クラスで要素を特定するには?

* 複数のセレクタをまとめて指定するには?

* すべての要素を取得するには?

* ある要素の配下にある要素だけを取得するには?

* ある要素の直下にある要素だけを取得するには?

* 指定した要素の次要素を取得するには?

* 指定した要素以降の兄弟要素を取得するには?

* 先頭/末尾の要素だけを取得するには?

* 指定された親要素の先頭/末尾の子要素を取得するには?

* 偶数/奇数番目の要素だけを取得するには?

* 指定したインデックス番号(より大きい/未満)の要素を取得するには?

* 指定された要素直下から特定の子要素だけを取得するには?

* 指定したセレクタ以外の要素を取得するには?

* 配下に特定のテキストを含んだ要素を取得するには?

* 空要素だけを取得するには?

* 何らかの子要素を持つ要素を取得するには?

* 指定した子要素を持つ要素を取得するには?

* 子要素が1つだけである要素を取得するには?

* 属性の値によって取得要素を絞り込むには?

* 複数の属性フィルタを組み合わせるには?

* フォーム要素やヘッダ要素を取得するには?

* 特定の状態にある要素のみを取得するには?

第1回 セレクタ編 - @IT

これをきっかけに曖昧なところをいったん全部整理しようと思います。

後の記事でまた詳しく書きます。