jQuery入門

トップ > jQuery > Utilities

Utilities

◆ $.boxModel (1.0-1.2.6)

現在のページが、W3C CSS のボックスモデルをサポートしているか否かを true / false で返します。jQuery 1.3 で破棄されました。代わりに $.support.boxModel を参照してください。

if ($.boxModel) { ... }
◆ $.browser (1.0-1.8)

ブラウザに関する情報を保持します。jQuery 1.9 で廃止されました。

if ($.browser.msie) { alert("Internet Explorer"); }
if ($.browser.mozilla) { alert("Mozilla (ex.Firefox...)"); }
if ($.browser.opera) { alert("Opera"); }
if ($.browser.webkit) { alert("WebKit (ex. Chrome, Safari...)"); }
if ($.browser.safari) { alert("Safari"); }
if ($.browser.chrome) { alert("Google Chrome"); }
alert($.browser.version);   // jQuery 1.1.3~
◆ $.support (1.3)

ブラウザのサポート状況に関するオブジェクトを返却します。

$.each($.support, function(key, val)) {
    $("#log").append(key + " = " + val + "\n");
});

オブジェクトはいくつかの true / false 値を持つ属性を持ちます。

名前説明
ajaxAjaxをサポートしているか。
boxModelW3C CSSボックスモデルをサポートしているか。
changeBubblesW3C CSSイベントモデルに従ったイベントのバブルアップをサポートしているか。
checkCloneradioボタンや、checkboxの複製の際にチェックステータスもコピーするか。
checkOn値を持たない checkbox のデフォルト値が "on" になるか。
corsCORS(Cross-Origin Resource Sharing)をサポートしているか。
cssFloatCSS float のプロパティ名が CSS Spec で定められた .cssFloat であるか。
hrefNormalized .getAttribute() が href 属性を変更無しに取得できるか。
htmlSerialize.innerHTML で <link> のシリアライズや挿入できるか。
leadingWhitespace.innerHTML でホワイトスペース等をそのまま挿入できるか。
noCloneCheckedDOM要素のコピーが .checked の状態もコピーするか。
noCloneEventDOM要素がイベントハンドラ無しで生成されるか。
opacityopacity をサポートしているか。
optDisableddisabled なセレクト要素中の option要素が、自動的に disabled にならないか。
optSelectedデフォルトで選択状態の option要素が selected 属性を持っているか。
scriptEval.appendChild() や .createTextNode() などの標準的な DOM操作で追加されたスクリプトが実行されるか。
style要素のインラインスタイルが、DOM Level 2仕様の通りに、DOM の style属性で参照できるか。
submitBubblessubmitイベントが、W3C DOM Event model で定められている通りにバブルアップするか。
tbody空の table要素が、tbody要素無しに存在できるか。
◆ $.data(element, key, value) (1.2.3)
◆ $.data(element, key) (1.2.3)
◆ $.data(element) (1.2.3)

element要素に、key=value の値を設定・参照します。

$.data(document, "fontSize", "small");
$.data(document, "language", "Japanese");

alert($.data(document, "fontSize"));    // small
alert($.data(document, "language"));    // Japanese

$.each($.data(document), function(key, val) {
    $("#log").append(key + "=" + val + "\n");
});
◆ $.trim(str) (1.0)

文字列 str の前後のホワイトスペースを除去した文字列を返却します。

var str = $.trim("   abc   ");      // "abc"
◆ $.parseJSON(json) (1.4.1)

文字列 json を JSONと解釈してオブジェクトに変換し、返却します。変数名も値もダブルクォーテーション(")で囲む必要があります。ダブルクォーテーション(")で囲まれていなかったり、シングルクォーテーション(')で囲まれている場合はエラーになります。

var str = '{ "name":"John", "age":"36" }';
var obj = $.parseJSON(str);
$("#log").append("name = " + obj.name + "\n");    // name = John
$("#log").append("age = " + obj.age + "\n");      // age = 36
◆ $.parseXML(xml) (1.5)

文字列 xml を XMLとして解釈してオブジェクトに変換し、返却します。

var str = '<xml><name>John</name><age>36</age></xml>';
var xmlDoc = $.parseXML(str);
$("#log").append("name = " + $(xmlDoc).find("name").text() + "\n");       // name = John
$("#log").append("age = " + $(xmlDoc).find("age").text() + "\n");         // age = 36
◆ $.each(collection, callback(key, value)) (1.0)

配列をひとつづつ処理します。

var params = { height: "100px", width: "100px", top: "20px", left: "20px" };

$.each(params, function(key, val) {
    $("#log").append(key + "=" + val + "\n");
});
◆ $.grep(array, function(value, index)[, invert]) (1.0)

配列 array の中から、条件にマッチするもののみを抜き出します。value には要素の値、index にはインデックスが格納されます。抜き出す場合は true を、さもなくば false を返します。invert に false を指定した場合は、true と false が逆になります。下記の例では、配列の中から "u" を含むもののみを抜き出して、配列 arr2 に代入します。arr1 の値は変化しません。

var arr1 = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ];
var arr2 = $.grep(arr1, function(value, index) {
    return (value.match(/u/));
});
alert(data2);
◆ $.unique(array) (1.1.3)

DOM要素の配列から重複した要素を排除します。数値、文字列、jQuery要素の配列では使用できず、DOM要素の対してのみ利用可能です。

<div id="a" class="blue"></div>
<div id="b" class="blue red"></div>
<div id="c" class="blue red"></div>
<div id="d" class="red"></div>

var div1 = $(".blue").get();     // a, b, c
var div2 = $(".red").get();      // b, c, d
var div3 = div1.concat(div2);    // a, b, c, b, c, d
var div4 = $.unique(div3);       // a, b, c, d
◆ $.makeArray(obj) (1.2)

jQuery の $("div") や JavaScript の getElementsByTagname() などで返されるリストを、JavaScript配列に変換します。

var obj1 = document.getElementsByTagName("div");
var arr1 = $.makeArray(obj1);
arr1.sort();

var obj2 = $("div");
var arr2 = $.makeArray(obj2);
arr2.reverse();
◆ $.map(array, function(val, index)) (1.0)
◆ $.map(arrayObject, function(val, indexOrKey)) (1.6)

配列 arrayfunction で指定した変換関数を用いて変換します。下記の例では、配列要素を大文字にした配列を生成しています。

var arr1 = [ "one", "two", "three" ];
var arr2 = $.map(arr1, function(val, i) {    // [ "ONE", "TWO", "THREE" ]
    return(val.toUpperCase());
});

jQuery 1.6 以降ではオブジェクトも使用できます。

var obj = { height:"100px", width:"100px" };
var arr = $.map(obj, function(val, key) {    // [ "height=100px", "width=100px" ]
    return(key + "=" + val);
});
◆ $.merge(array1, array2) (1.0)

配列 array1 に、配列 array2 の要素をマージし、マージした結果を返します。

var arr1 = [ 1, 2, 3 ];
var arr2 = [ 4, 5, 6 ];
$.merge(arr1, arr2);
$("#log").append(arr1.join(", "));    // 1, 2, 3, 4 5, 6

array1 の要素を変更したくない場合は、次のように呼び出してください。

var arr3 = $.merge($.merge([], arr1), arr2);
◆ $.extend(target[, object1][, objectN]) (1.0)
◆ $.extend(deep, target[, object1][, objectN]) (1.1.4)

配列 target に配列 object1, ... objectN の各要素をマージし、マージ後の配列を返却します。

var obj1 = { width:"100px", height:"100px" };
var obj2 = { top:"10px", left:"10px" };
var obj3 = $.extend({}, obj1, obj2);   // { width:"100px", height:"100px", top:"10px", left:"10px" }
◆ $.globalEval(code) (1.0.4)

code を JavaScript と解釈して実行します。

$.globalEval("var str = 'ABC';");
◆ $.type(obj) (1.4.3)

obj のタイプを文字列で返します。

type = $.type(null);           // null
type = $.type(true);           // boolean
type = $.type(123);            // number
type = $.type("abc");          // string
type = $.type([1, 2, 3]);      // array
type = $.type({ t1:123 });     // object
type = $.type(/abc/);          // regexp
type = $.type(function() {});  // function
type = $.type(new Date());     // date
type = $.type(new Error());    // error (jQuery 1.9~)
type = $.type($("body"));      // object
◆ $.contains(container, contained) (1.4)

contained要素が、container要素に包含されているか否かを調べます。

if ($.contains(document.documentElement, document.body)) { ... }  // true
if ($.contains(document.body, document.documentElement)) { ... }  // false
◆ $.inArray(value, array[, fromIndex]) (1.2)

配列 array の中で value に一致する要素のインデックスを返します。最初が 0番目で、見つからなかった場合は -1 を返します。fromIndex には検索を開始するインデックスを指定します。

var array = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ];
var num = $.inArray("Wed", array);        // num = 3
◆ $.isNumeric(arg) (1.7)
◆ $.isArray(obj) (1.3)
◆ $.isFunction(arg) (1.2)
◆ $.isEmptyObject(arg) (1.4)
◆ $.isPlainObject(arg) (1.4)
◆ $.isWindow(arg) (1.4.3)
◆ $.isXMLDoc(arg) (1.1.4)

それぞれ、arg が数値であれば、配列であれば、関数であれば、空オブジェクトであれば、プレインオブジェクトであれば、ウィンドウであれば、XMLドキュメントであれば true を返し、さもなくば false を返します。

if ($.isNumeric(123)) { ... }
if ($.isArray([ 1, 2, 3 ])) { ... }
if ($.isFunction(function() {})) { ... }
if ($.isEmptyObject({ })) { ... }
if ($.isPlainObject({ id:"abc" })) { ... }
if ($.isWindow(window)) { ... }
if ($.isXMLDoc($.parseXML("<n></n>"))) { ... }
◆ $.noop() (1.4)

何もしない関数です。プラグイン開発時などに、ダミーの関数として用いられます。

$.animate({ width:"100px" }, 3000, $.noop);
◆ $.proxy(function, context) (1.4)
◆ $.proxy(function, context[, additionalArguments]) (1.5)
◆ $.proxy(context, name) (1.4)
◆ $.proxy(context, name[, additionalArguments]) (1.6)

context を this として参照可能な関数 function を生成します。ある要素のイベントハンドラの中で、別の要素を this として扱う関数を実行したい場合に有効です。下記の例では、button1ボタンが押された時に、div1要素を this として扱う関数を呼び出しています。

$("#button1").click($.proxy(function() {
    $("#log").append("id = " + $(this).attr("id") + "\n");
}, $("#div1")));

contenxt, name の形式は、this として扱われるオブジェクトと、そのオブジェクトが持つ関数名を指定します。

var obj = {
    name: "John",
    test: function() {
        $("#log").append("My name is " + this.name + "\n");
    }
};
$("#button1").click($.proxy(obj, "test"));
◆ $.now() (1.4.3)

現在の時刻を 1970年1月1日0時0分0秒(GMT)からの秒数で返します。

$("#log").append("now = " + $.now() + "\n");

Copyright (C) 2013 杜甫々
初版:2013年2月3日
http://www.tohoho-web.com/js/jquery/utilities.htm