jQueryの共通ツールメソッド

巴扎黑
リリース: 2017-06-26 14:32:47
オリジナル
1086 人が閲覧しました

前言

jQueryには要素と関係のないツールメソッドがいくつか用意されており、これらのメソッドは要素を選択せず​​に直接使用することができます。ネイティブJavaScriptの継承原理を理解すると、ツールメソッドの本質が理解できます。 jQueryコンストラクタ上に定義されたメソッド、つまりjQuery.method()なので、そのまま利用できます。これらの要素を操作するメソッドは、コンストラクターのプロトタイプ オブジェクトに定義されたメソッド、つまり jQuery.prototype.method() であるため、使用する前にインスタンスを生成する (つまり、要素を選択する) 必要があります。ツール メソッドは、JavaScript ネイティブ関数と同様に直接使用できるメソッドであると考えてください。 jQueryの共通ツールメソッドは以下で詳しく紹介します

要素関連

【each()】

オブジェクトや配列をシームレスに反復するために使用できる一般的な反復関数です。配列および配列に似たオブジェクトは、0 から length - 1 までの数値インデックスを持つ長さプロパティ (関数の引数オブ​​ジェクトなど) を反復処理します。他のオブジェクトはプロパティ名を通じて反復されます

jQuery.each( collection, callback(indexInArray, valueOfElement) )
ログイン後にコピー

jQuery.each() 関数は、特に jQuery オブジェクトを反復するために使用される jQuery(selector).each() とは異なります。 jQuery.each() 関数は、「名前/値」オブジェクト (JavaScript オブジェクト) であっても配列であっても、任意のコレクションを反復処理するために使用できます。配列を反復処理する場合、コールバック関数には毎回 1 つの配列インデックスと対応する配列値が引数として渡されます。 (値は this キーワードにアクセスすることによっても取得できますが、JavaScript は this 値が単純な文字列または数値であっても常にオブジェクトとして扱います。) このメソッドは最初の引数 (取得するオブジェクト) を返します。

$.each( ['a','b','c'], function(index,value){//Index #0: a//Index #1: b//Index #2: cconsole.log( "Index #" + index + ": " + value );
});
ログイン後にコピー
$.each( { name: "John", lang: "JS" }, function(index,value){//Index #name: John//Index #lang: JSconsole.log( "Index #" + index + ": " + value );
});
ログイン後にコピー

【contains()】

DOM要素が別のDOM要素の子孫であることを確認します

jQuery.contains( container, contained )
ログイン後にコピー
$.contains( document.documentElement, document.body ); // true
ログイン後にコピー

【extend()】

最初のオブジェクトにマージします

jQuery.extend( target [, object1 ] [, objectN ] )

target: Object 一个对象,如果附加的对象被传递给这个方法将那么它将接收新的属性,如果它是唯一的参数将扩展jQuery的命名空间。
object1: Object 一个对象,它包含额外的属性合并到第一个参数
objectN: Object 包含额外的属性合并到第一个参数
ログイン後にコピー
$.extend({}, object1, object2);
ログイン後にコピー
jQuery.extend( [deep ], target, object1 [, objectN ] )

deep: Boolean 如果是true,合并成为递归(又叫做深拷贝)。
target: Object 对象扩展。这将接收新的属性。
object1: Object 一个对象,它包含额外的属性合并到第一个参数.
objectN: Object 包含额外的属性合并到第一个参数
ログイン後にコピー
$.extend(true, object1, object2);
ログイン後にコピー

データ関連

【data()】

指定要素に任意のデータを格納したり、設定した値を返したりする

jQuery.data( element )
ログイン後にコピー
type() メソッドを使用JavaScriptオブジェクトのタイプを検出します
オブジェクトが未定義またはnullの場合、対応する「未定義」または「null」を返します
element:Element 要关联数据的DOM对象
key: String 存储的数据名
value:Object 新数据值
ログイン後にコピー

オブジェクトが内部[[クラス]]とブラウザの組み込みオブジェクトの場合[[ Class]] は同じで、対応する [[Class]] 名を返します

$.data(document.body, 'foo', 52);
$.data(document.body, 'bar', 'test');
console.log($.data( document.body, 'foo' ));//52console.log($.data( document.body ));//{foo: 52, bar: "test"}
ログイン後にコピー
したがって、このメソッドはネイティブ JavaScript のカプセル化された Object.prototype.toString() メソッドに似ています
jQuery.removeData( element [, name ] )
ログイン後にコピー

【isArray ()】

ネイティブ JavaScript では、Web ページに複数のフレームが含まれている場合、配列の検出はもはや簡単ではありません

jQuery には、配列を検出するための isArray() メソッドが用意されています

var div = $("div");
$.data(div, "test1", "VALUE-1");
$.data(div, "test2", "VALUE-2");
console.log($.data(div));//{test1: "VALUE-1", test2: "VALUE-2"}$.removeData(div, "test1");
console.log($.data(div));//{test2: "VALUE-2"}
ログイン後にコピー

【isFunction ( )】

isFunction()メソッドは、入力パラメータが関数かどうかを検出するために使用されます

jQuery.type( undefined ) === "undefined"jQuery.type() === "undefined"jQuery.type( window.notDefined ) === "undefined"jQuery.type( null ) === "null"
ログイン後にコピー
ネイティブJavaScriptを使用する場合は、typeofを使用して実装できます

jQuery.type( true ) === "boolean"jQuery.type( 3 ) === "number"jQuery.type( "test" ) === "string"jQuery.type( function(){} ) === "function"jQuery.type( [] ) === "array"jQuery.type( new Date() ) === "date"jQuery.type( new Error() ) === "error" jQuery.type( /test/ ) === "regexp"
ログイン後にコピー
【isNumeric()】

isNumeric( )メソッド 入力パラメータが数値であるかどうかを検出するために使用されます

[注意]パラメータは純粋な数値または数値文字列にすることができます

function type(obj){return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
}
ログイン後にコピー
ネイティブJavaScriptを使用する場合はtypeofを使用できますが、結果は少し異なります

console.log($.isArray([]));//true
ログイン後にコピー

【isEmptyObject()】

isEmptyObject()メソッドはオブジェクトが空オブジェクトかどうかの検出に使用されます

console.log($.isFunction(function(){}));//true
ログイン後にコピー
【isPlainObject()】

isPlainObject()メソッドはオブジェクトがネイティブかどうかの検出に使用されますオブジェクト、つまり「 {}」または「新しいオブジェクト」によって作成されたオブジェクト

console.log(typeof function(){});//"function"
ログイン後にコピー

配列関連

【inArray()】

inArray(value, array [, fromIndex]) メソッドは次と似ています。ネイティブ JavaScript の IndexOf() メソッド。一致する要素が見つからない場合は -1 を返します。配列の最初の要素がパラメーターと一致する場合、$.inArray() は 0 を返します

パラメーター fromIndex は配列のインデックス値で、どこから検索を開始するかを示します。デフォルト値は0です

$.isNumeric("-10");  // true$.isNumeric(-10);  // true
ログイン後にコピー
【makeArray()】

makeArray()メソッドは、配列のようなオブジェクトを実際のJavaScript配列に変換するために使用されます

console.log(typeof 10);//"number"console.log(typeof '10');//"string"
ログイン後にコピー
ネイティブJavaScriptを使用する場合は、次のようにすることができます配列のようなオブジェクトに対するスライス()メソッドが実際の配列になります

jQuery.isEmptyObject({}) // truejQuery.isEmptyObject({ foo: "bar" }) // false
ログイン後にコピー

【unique()】

  unique()方法用于数组去重

var $arr = [document.body,document.body];
console.log($.unique($arr));//[body]var $arr = [1,2,1];
console.log($.unique($arr));//[2,1]
ログイン後にコピー

  使用原生javascript实现如下

Array.prototype.norepeat = function(){var result = [];for(var i = 0; i < this.length; i++){if(result.indexOf(this[i]) == -1){
            result.push(this[i]);
        }
    }return result;
}
ログイン後にコピー
var arr = [1,2,1];
console.log(arr.norepeat());//[1,2]var arr = [document.body,document.body];
console.log(arr.norepeat());//[body]
ログイン後にコピー

【grep()】

  查找满足过滤函数的数组元素。原始数组不受影响

jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] )
array: Array 用于查询元素的数组。function: Function() 该函数来处理每项元素的比对。第一个参数是正在被检查的数组的元素,第二个参数是该元素的索引值。该函数应返回一个布尔值。this将是全局的window对象。
invert: Boolean 如果“invert”为false,或没有提供,函数返回一个“callback”中返回true的所有元素组成的数组,。如果“invert”为true,函数返回一个“callback”中返回false的所有元素组成的数组。
ログイン後にコピー

  $.grep()方法会删除数组必要的元素,以使所有剩余元素通过过滤函数的检查。该测试是一个函数传递一个数组元素和该数组内这个的索引值。只有当测试返回true,该数组元素将返回到结果数组中。

  该过滤器的函数将被传递两个参数:当前正在被检查的数组中的元素,及该元素的索引值。该过滤器函数必须返回'true'以包含在结果数组项

var result = $.grep( [0,1,2], function(n,i){   return n > 0;
 });
console.log(result);//[1, 2]
ログイン後にコピー
var result = $.grep( [0,1,2], function(n,i){   return n > 0;
 },true);
console.log(result);//[0]
ログイン後にコピー

【merge()】

  合并两个数组内容到第一个数组

jQuery.merge( first, second )
ログイン後にコピー
console.log($.merge( [0,1,2], [2,3,4] ));//[0, 1, 2, 2, 3, 4]
ログイン後にコピー

 

其他

【proxy()】

  proxy()方法接受一个函数,然后返回一个新函数,并且这个新函数使用指定的this

  proxy()方法类似于bind(),但并不相同。区别在于,bind()方法是改变原函数的this指向,而proxy()方法是新建一个函数,并使用参数中的this指向,原函数的this指向并无变化

var a = 0;function foo(){
    console.log(this.a);
}var obj = {
    a:2};
foo();//0$.proxy(foo,obj)();//2foo();//0
ログイン後にコピー

  proxy()方法支持多种参数传递方式

function foo(a,b){
    console.log(a+b);   
}

$.proxy(foo,document)(1,2);//3$.proxy(foo,document,1,2)();//3$.proxy(foo,document,1)(2);//3
ログイン後にコピー

  在绑定事件时一定要合理使用proxy()方法的参数传递方式,否则事件还没有发生,可能函数已经被调用了

$(document).click($.proxy(foo,window,1,2))
ログイン後にコピー

【trim()】

  jQuery.trim()函数用于去除字符串两端的空白字符

  这个函数很简单,没有多余的参数用法

console.log($.trim("    hello, how are you?    "));//'hello, how are you?'
ログイン後にコピー

 【noop()】

  一个空函数

jQuery.noop() 此方法不接受任何参数
ログイン後にコピー

  当你仅仅想要传递一个空函数的时候,就用他吧

  这对一些插件作者很有用,当插件提供了一个可选的回调函数接口,那么如果调用的时候没有传递这个回调函数,就用jQuery.noop来代替执行

【now()】

  返回一个数字,表示当前时间

jQuery.now() 这个方法不接受任何参数
ログイン後にコピー

  $.now()方法是表达式(new Date).getTime()返回数值的一个简写

【parseHTML()】

  将字符串解析到一个DOM节点的数组中

jQuery.parseHTML( data [, context ] [, keepScripts ] )
data : String 用来解析的HTML字符串
context (默认: document): Element DOM元素的上下文,在这个上下文中将创建的HTML片段。
keepScripts (默认: false): Boolean 一个布尔值,表明是否在传递的HTML字符串中包含脚本。
ログイン後にコピー

  jQuery.parseHTML 使用原生的DOM元素的创建函数将字符串转换为一组DOM元素,然后,可以插入到文档中。

  默认情况下,如果没有指定或给定null or undefinedcontext是当前的document。如果HTML被用在另一个document中,比如一个iframe,该frame的文件可以使用

var result = $.parseHTML( "hello, my name is jQuery");
$('div').append(result);
ログイン後にコピー

【parseJSON()】

  接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript 对象

jQuery.parseJSON( json )
ログイン後にコピー
var obj = jQuery.parseJSON('{"name":"John"}');
console.log(obj.name === "John");//true
ログイン後にコピー

 

以上がjQueryの共通ツールメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!