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 回答