Answers:
使用逗号。
'.classA, .classB'
您可以选择省略空格。
AND
会是.classA.classB
。
如果您有多个需要联接的jQuery对象,使用逗号可能还不够。
的。新增()方法将所选择的元素到结果集:
// classA OR classB
jQuery('.classA').add('.classB');
它比更加冗长'.classA, .classB'
,但是可以让您构建更复杂的选择器,如下所示:
// (classA which has <p> descendant) OR (<div> ancestors of classB)
jQuery('.classA').has('p').add(jQuery('.classB').parents('div'));
我为此功能编写了一个非常简单的(5行代码)插件:
http://byrichardpowell.github.com/jquery-or/
它使您可以有效地说出“获取此元素,或者如果该元素不存在,请使用此元素”。例如:
$( '#doesntExist' ).or( '#exists' );
尽管接受的答案提供了与此类似的功能,但是如果两个选择器(逗号前后)都存在,则将返回两个选择器。
希望对所有可能通过Google进入此页面的人有帮助。
"a" || "b"
vs. 的行为null || "b"
。如果我们在此处应用相同的行为,$(a).or(b)
则应$(a)
在存在的情况下返回,否则应返回$(b)
。我认为此命名法没有任何问题,因为“或”与JS“ ||”的行为相匹配 (或)运算符。
or
。其他什么都在谈论更像是一个concat
或merge
动作。
如果您要使用element = element1 ||的标准构造 element2,其中JavaScript将返回第一个是真实的,您可以这样做:
element = $('#someParentElement .somethingToBeFound') || $('#someParentElement .somethingElseToBeFound');
这将返回实际找到的第一个元素。但是更好的方法可能是以这种方式使用jQuery选择器逗号构造(它返回找到的元素的数组):
element = $('#someParentElement').find('.somethingToBeFound, .somethingElseToBeFound')[0];
这将返回第一个找到的元素。
我不时使用它在列表中找到一个活动元素,或者在没有活动元素的情况下查找一些默认元素。例如:
element = $('ul#someList').find('li.active, li:first')[0]
这将返回具有活动类的任何li,或者如果没有,则将仅返回最后一个li。
两者都会起作用。但是,由于||可能会导致性能下降。一旦发现真相,它将立即停止处理,而数组方法将尝试查找所有元素,即使它已经找到了一个。然后再次使用|| 如果构造必须在找到要返回的选择器之前经过多个选择器,则可能会出现性能问题,因为它必须为每个选择器调用主jQuery对象(我真的不知道这是否对性能造成影响,似乎合乎逻辑)。但是,通常,当选择器是一个相当长的字符串时,我会使用数组方法。