1

複数の jQuery オブジェクトを渡す関数があるとします。

function manipulateStuff(obj1, obj2) { /* ... */ }
manipulateStuff($("div"), $("h1"));

ここで、両方に対して何らかのアクションを実行したいとします。

それぞれに対してコードを繰り返したり、それらをループするコードを書いたりすることはいつでもできますが、それをする気はありません。複数の jQuery オブジェクトの要素を組み合わせる何らかの方法が必要です。次のコードは機能しませんが、探しているものの種類を示しています

$(obj1, obj2).css("color", "red");

jQueryに組み込まれているこれを行う方法はすでにありますか? そうでない場合、それを行うための小さなプラグインを作成できますか?

編集:明確にするために、文字列セレクターではなく、jQuery オブジェクトを操作しています。セレクターのコンマ演算子については既に認識しています。

4

4 に答える 4

2

セレクターがわかっている場合の最も簡単な方法は、コンマを使用することです。

$('div, h1').doSomething();

匿名の jQuery オブジェクトがあり、それらをマージしたい場合は、要素のいくつかの jQuery オブジェクトをマージする単純なユーティリティ関数を作成できます。

$.add = function() {
    var args = $.makeArray(arguments);
    return $.fn.add.apply(args.shift(), args);
}

var divs = $('div'),
    h1 = $('h1');

$.add(divs, h1).doSomething();

http://jsfiddle.net/hvm7z/

于 2012-06-28T12:06:34.483 に答える
1

jQuery オブジェクトを使用する場合は、次のように使用できます。

function manipulateStuff(obj1, obj2) {
    obj1.add(obj2).css("color", "red");
}

manipulateStuff($("div"), $("h1"));

または、文字列セレクターを使用する場合は、次を試してください。

function manipulateStuff(obj1, obj2) {
    $(obj1 + ", " + obj2).css("color", "red");
}

manipulateStuff("div", "h1");
于 2012-06-28T11:52:31.903 に答える
0

簡単な例

function manipulateStuff(obj1, obj2) { 
   var bothObj =  $(obj1 + ", "+ obj2);  // cache a reference for further operation
   bothObj.css("color", "red");
}
manipulateStuff("div", "h1");
于 2012-06-28T11:53:00.140 に答える