4

複数のボタンを選択し、最初のボタンを順番にクリックしたいと思います。関数のようなCOALESCEもの。

私はこれを試しました:

$(".selector1, .selector2, .selector3").first().click();

これは機能しますが、選択は私のセレクタクエリの順序ではなく、DOM の順序に従います。なにか提案を?

4

3 に答える 3

5

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();

于 2012-04-18T09:17:32.317 に答える
2

each() で要素を反復すると、次のように正しい順序が得られます。

var elms = [".selector1", ".selector2", ".selector3"];

$.each(elms, function(index, item) {
    $(item).append('<br><br>This is item '+index);
});​

フィドル

于 2012-04-18T09:23:51.307 に答える
1

メソッドを使用get()して要素の配列を取得し、次のように連結できます。

$($(".selector1").get().concat($(".selector2").get(), $(".selector3").get())).first().click();
于 2015-02-06T01:59:00.087 に答える