2009-03-17 10 views
2

私は4つのjQueryオブジェクト(すなわち、$("ObjectID")によって構築されたもの)を持っています。すべて同じ操作を上品な方法で実行したいと思います。私はこれらのようなものが働くだろうと思っているだろうが、それはしていないようです。このために良い構文jQuery:オブジェクトの配列に対して操作を実行しますか?

$([obj1, obj2, obj3, obj4]).change(function() { otherObj.show(); }); 
$([obj1, obj2, obj3, obj4]).attr("disabled", "disabled"); 

ありますか?やや盲目的な見通しのようだ。

var obj1 = $("..."); 
var obj2 = $("..."); 
var obj3 = $("..."); 
var obj4 = $("..."); 

:現在、私は見ている最高の

$([obj1, obj2, obj3, obj4]).each(
    function() { this.change(function() { otherObj.show(); })); 
+0

そのトップシンタックスは正常に動作しているはずです... –

答えて

5

をやってみているのですか?

もしそうなら、あなたは、単一のセットにそれらを回すことができます。

var complete = obj1.add(obj2).add(obj3).add(obj4); 

、その後だけに、最終的なセットを使用します。これは、IDSのために動作します

complete.change(function() { 
    otherObj.show(); 
}).attr("disabled", true); 
+0

それだけです!少し迷惑な、しかしすべての良い。 – Domenic

+0

http://docs.jquery.com/Traversing/addによれば、.add()関数は一度に1つの新しい要素に限定されません – Gareth

+0

これは純粋な天才です。あなたは私に多くの時間を救った。 – cr0z3r

2

は、あなたがそれらを作成するときに、オブジェクトにクラスを取り付け、あなたが持っている意味

$(".class") 
    .change(function(){otherObj.show();}) 
    .attr("disabled","disabled"); 
+0

これはおそらく最適な解決策ですが、私が受け入れた答えはすべての状況で機能するものです。 – Domenic

2

$("#obj1,#obj2,#obj3,#obj4") 

これは任意のセレクタでも機能します。カンマ区切りのリストで何かを組み合わせることができます。

0

もちろん、eachコマンドを使用することは、それに取り組む1つの方法ですが、他の方法もあります。

あなたはpeel away the jQuery object to get an arrayとすることができます。あなたが配列上で行う必要のあることを実行し、それをjQueryオブジェクトにラップします。

plugins with array methods and enumurablesもあり、配列とjQueryオブジェクトを操作できます。

関連する問題