複数のボタンを選択し、最初のボタンを順番にクリックしたいと思います。関数のようなCOALESCE
もの。
私はこれを試しました:
$(".selector1, .selector2, .selector3").first().click();
これは機能しますが、選択は私のセレクタクエリの順序ではなく、DOM の順序に従います。なにか提案を?
jQuery は常に要素を DOM 順に返すため、次の行に沿って何かを行う必要があります。
$.each(['.selector1', '.selector2', '.selector3'], function(i, selector) {
var res = $(selector);
if (res.length) {
res.first().click();
return false;
}
});
次のように、それを jQuery 拡張機能に組み込むことができます。
$.coalesce = function(selectors) {
var match;
var selector = $.each(selectors, function(i, selector) {
var res = $(selector);
if (res.length) {
match = res;
return false;
}
});
return match || $([]);
};
そして、電話する
$.coalesce(['.selector1', '.selector2', '.selector3']).first().click();
each() で要素を反復すると、次のように正しい順序が得られます。
var elms = [".selector1", ".selector2", ".selector3"];
$.each(elms, function(index, item) {
$(item).append('<br><br>This is item '+index);
});
メソッドを使用get()
して要素の配列を取得し、次のように連結できます。
$($(".selector1").get().concat($(".selector2").get(), $(".selector3").get())).first().click();