javascript - 如何使用 OR 条件链接选择器(如果 main 为空,则为替代结果集)

标签 javascript jquery jquery-selectors chaining

我现在拥有的:

var result = $('selector1');
if (result.length == 0) result = $('selector2');

但这会破坏链接。

问题是 - 如何使用 JQuery 链接获得相同的结果?

我不能使用 $('selector1, selector2'),因为这总是会为两个选择器选择结果集,而我只需要 selector2 的结果selector1 没有匹配的元素。

最佳答案

这种行为在某些地方被称为“合并”。这是一个通用的 jQuery 插件,可以为您完成此操作(根据反馈进行编辑,请参阅评论)。

// The namespace function
jQuery.coalesce = function(selectors){

    var out;

    $.each(selectors, function(i, v){
        var el = jQuery(v);
        if (el.length) {
           out = el;
           return false;
        }
    });

    return out || jQuery();
};

// The jQuery plugin
jQuery.fn.coalesce = function(){
    return jQuery.coalesce(this.selector.split(",")); //a little brittle
};

因此,在一个 #foo 不存在而 adiv 存在的世界中,如果您存在:

jQuery.coalesce(["#foo", "a", "div"])

如果 #foo 不存在,则返回 jQuery("a"),如果 jQuery("#foo") #foo 确实存在。

如果您需要在链的中间使用它,您可以使用 $("#foo, a, div").coalesce(),但它容易受到选择器本身内的命令的影响.

关于javascript - 如何使用 OR 条件链接选择器(如果 main 为空,则为替代结果集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892666/

相关文章:

javascript - 控制导航样式的 JQuery 函数(每个导航选择有不同的颜色)

jquery - 滑下元素高度

javascript - jQuery - 严格的子层级选择

JQuery .load() 使内容在加载后不可点击

javascript - 如何根据数据属性内对象的属性选择元素?

javascript - 动画后响应式自动高度容器

javascript - 使用 jquery 从 textarea 获取 anchor 标签

javascript - 为 Javascript 二进制搜索树编写递归添加方法

javascript - 重定向页面并调用 javascript 函数

javascript - 无法检测用户何时到达手机上浏览器的末尾