2016-07-26 5 views
0

を呼び出す.each jQueryのであらかじめ定義された機能の使用:私はこのような複数のjQueryオブジェクトの.each()関数を呼び出す必要が

$('#table_1').each(function(){ /* foo */ }); 
$('#table_2').each(function(){ /* foo */ }); 
$('#table_3').each(function(){ /* foo */ }); 

を私はよりこれを行うためのより良い方法を発見していません各機能を個別に書き出します。このような関数の定義

$.fn.extend({ 
    foo: function() { 

     //Some code 
    } 
}); 

$('#table_1').each(foo); 

は、コンソールにエラー「プロパティを読み取ることができません未定義の機能上 『と呼ぶ』」を返します。

私はここで間違っていますか?

+0

普通の関数としてのfooを定義し、それが動作します。 – user1751825

+2

'var foo = function(){};それぞれ(foo); ' – nnnnnn

答えて

1

fooこのラッパーの外側には表示されず、jqueryオブジェクトでのみ呼び出すことができます。

むしろ

$.fn.extend({ 

の内側にラップよりも簡単に作ること

var foo = function() { 
    //Some code 
} 

または$.fn.extendあなたはjQueryオブジェクトを拡張しているが、あなただけの簡単な関数を作成する必要があると

function foo() {  
    //Some code 
} 
+0

なぜ... function foo()... – user1751825

+0

@ user1751825はいこれも有効です – gurvinder372

1

var foo = function(position, obj) { 
    console.log('iterated object:', obj); 
} 

$('#table_1').each(foo); 
1

あなたは各要素に対して直接のfoo関数を呼び出したい場合:

$('#table_1, #table_2, #table3').each(function() { 
    $(this).foo(); 
}); 
私はあなたがそれらの要素に共通のクラスを配置し、このクラスで選択することができることを示唆している

$('.commonClass').each(function() { 
    $(this).foo(); 
}); 

または、foo関数内で繰り返しを実行できます。

$.fn.extend({ 
    foo: function() { 
    return this.each(function() { 
     // Do your stuff here 
    }); 
    } 
}); 

このような初期化:

$('.commonClass').foo(); 

foo()は、選択された各要素

$.fn.extend({ 
 
    foo: function() { 
 
    return this.each(function() { 
 
     this.style = 'color:red'; 
 
    }); 
 
    } 
 
}); 
 

 
// Call the function without each() 
 
$('li').foo();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<ul> 
 
    <li>Test</li> 
 
    <li>Test</li> 
 
    <li>Test</li> 
 
</ul>
赤へのテキストの色を回します210

0

通常の「ネイティブ」機能を使用してください。 jQueryは引数の順序を逆転させるので、最初にインデックスを、次に要素を(コンテキストthisでも)持ちます。

function doSomething(i, el){ 
    $(el).html('I was changed ' + i); 
} 
$(div).each(doSomething); 

jsFiddle:https://jsfiddle.net/sdc2a011/

関連する問題