each() 関数は、基本的にすべてのフレームワークによって提供されるツール関数であり、それを通じてオブジェクトや配列の属性値をトラバースして処理することができます。 jQuery と jQuery オブジェクトの両方がこのメソッドを実装します。jQuery オブジェクトの場合、各メソッドは単純に委任されます。つまり、jQuery オブジェクトは最初のパラメーターとして jQuery の各メソッドに渡されます。つまり、jQuery によって提供される各メソッドは、すべてのサブ要素です。パラメータ 1 で指定されたオブジェクトは 1 つずつ呼び出されます。 jQuery オブジェクトが提供する each メソッドは、jQuery 内のサブ要素を 1 つずつ呼び出します。
JQUERY のコア コード
jQuery.prototype.each=function( fn, args ) {
return jQuery.each( this, fn, args )
}
見てみましょう。 jQuery によって提供される各メソッドの具体的な実装を見てみましょう。
jQuery.each(obj,fn,arg)
このメソッドには 3 つのパラメータがあります: 操作対象のオブジェクト obj、操作対象の関数 fn演算対象、および関数パラメータの引数。
ojb オブジェクトに基づいて説明します。
1. obj オブジェクトは配列です。
各メソッドは、配列内のサブ要素に対して fn 関数を 1 つずつ呼び出します。特定のサブ要素を呼び出して返される結果は false になるまでです。つまり、提供された fn 関数で処理し、特定の条件を満たした後で各メソッド呼び出しを終了できます。 each メソッドが arg パラメーターを提供する場合、fn 関数呼び出しによって渡されるパラメーターは arg です。それ以外の場合: サブ要素のインデックス、サブ要素自体
2.obj オブジェクトは配列ではありません
このメソッドと 1 の最大の違いは、 fn メソッドは戻り値に関係なく 1 つずつ実行されることです。つまり、fn 関数が false を返した場合でも、obj オブジェクトのすべてのプロパティが fn メソッドによって呼び出されます。呼び出しで渡されるパラメータは 1 に似ています。
jQuery.each=function( obj, fn , args ) {
if ( args ) {
if ( obj.length == unknown ){
for ( var i in obj )
fn.apply( obj, args ); }else{
for ( var i = 0, ol = obj.length; i
if ( fn.apply( obj, args ) === false )
break;
}
}
} else {
if ( obj.length == unknown ) {
for ( var i in obj )
fn.call( obj, i, obj ) ;
}else{
for ( var i = 0, ol = obj.length, val = obj[0]; i < ol && fn.call(val,i,val) !== false; val = obj [ i] ){}
}
}
return obj;
}
各メソッドの fn の具体的な呼び出し方法に注意してくださいfn(i,val) または fn(args) は単純ではありませんが、fn.call(val,i,val) または fn.apply(obj.args) の形式をとります。これは、fn の独自の実装を意味します。を使用すると、このポインターを直接使用して、配列またはオブジェクトのサブ要素を参照できます。このメソッドは、ほとんどの jQuery で使用される実装メソッドです。
例で説明してみましょう
最初にコードを見てください:
$("#submit").click(function(){
try{
$('#leftTbl tr').each(function) (i){
var emailInput = $("#email_" (1 i));
if(!re.test(emailInput.val())){
alert("正しくメールを送信します");
emailInput.focus();
throw emailInput;
}else{
email = emailInput.val();
}
});
}catch(e){
return false;
$("#pageform").submit()
});
スルーcatch を使用してカウンターを作成することもできます。最後にその値を判断します。
上記のコードはタイトルとは関係がないように見えますが、それぞれでの Break と continue の実装方法は実際には以下に関係します。 ...
$('input') .each(function(){
if($(this).val () == ''){
// 何かを実行します
if(1==1)return false; // return を使用しますループを抜け出すには false
else return true; // 次のループに入るには return true を使用します。
jquery では、次のことを確認する必要があります。各要素を反復した後の戻り値で、次の要素の反復を続行するかどうかを決定します
元の記事。転載する場合はその旨を明記してください: Tongluba www.tlbar.com.cn
コードをコピーします
コードは次のとおりです:
var arr = [ "1", "two", "three", "four"];
$.each(arr, function(){
alert(this);
});
//上記のそれぞれの出力結果は次のとおりです: 1、2、3、4
var arr1 = [[1, 4, 3], [4, 6, 6], [7 , 20, 9]]
$.each(arr1, function(i, item){
alert(item[0]);
}); 実際には、arr1 は 2 です。 -次元配列、item は各 1 次元配列を取得することと同等です。
//item[0] は各 1 次元配列の最初の値を取得することと同等です。
//したがって、上記のそれぞれの出力は次のようになります。 1 4 7
var obj = { 1:1, 2:2, 3:3, 4:4};
$.each(obj, function(key, val) {
alert(obj[ key] );
});
//これはさらに強力で、すべての属性を循環できます
// 出力結果は次のとおりです: 1 2 3 4