1

如果 jQuery 选择器返回多个 DOM 元素,在 jQuery 中是否有一种方法可以不抛出/返回任何元素?我知道您可以通过简单的检查来包装每个调用,但如果有的话,我想使用现有的方法。

4

2 回答 2

4

没有内置方法,但添加一个并不难:

(function($) {
    $.fn.oneOnly = function() {
        if (this.length === 1) {
            return this;
        } else {
            return $();  // or throw / $.error()
        }
    };
 })(jQuery);

如果多个元素匹配,则将其放入链中以使链无效:

 $(sel).oneOnly().doSomething();

http://jsfiddle.net/alnitak/sevTY/

于 2012-10-20T21:46:23.067 回答
1

如果返回多个元素而没有使用长度来检查它,则无法抛出异常。另一种方法是$("selector").first()只使用第一个元素。

于 2012-10-20T21:55:18.577 回答