jQuery选择器:异或
我使用一组jQuery选择器在许多不同的页面上插入一些内容;但是,有些页面具有多个选择器,因此内容会在页面上插入多次。例如:jQuery选择器:异或,jquery,jquery-selectors,Jquery,Jquery Selectors,我使用一组jQuery选择器在许多不同的页面上插入一些内容;但是,有些页面具有多个选择器,因此内容会在页面上插入多次。例如: $('div.rColInnerL:first, div.box300.bdr.search:first, h2.blt13:first').before('<div>Hello World!</div>'); $('div.rColInnerL:first,div.box300.bdr.search:first,h2.blt13:first')
$('div.rColInnerL:first, div.box300.bdr.search:first, h2.blt13:first').before('<div>Hello World!</div>');
$('div.rColInnerL:first,div.box300.bdr.search:first,h2.blt13:first')。在('Hello World!'之前);
是否可以在jQuery选择器中使用一种异或,即只使用其中一种?非常感谢。您可以将找到的元素集缩减为第一个元素:
$('div.rColInnerL:first, div.box300.bdr.search:first, h2.blt13:first')
.first()
.before('<div>Hello World!</div>');
$('div.rColInnerL:first,div.box300.bdr.search:first,h2.blt13:first')
.first()
.在“你好,世界!”)之前;
从表面上看,您似乎可以使用该方法获得第一个匹配项
$('div.rColInnerL:first, div.box300.bdr.search:first, h2.blt13:first').first()
当然,这取决于第一个始终是正确的。由于在使用选择器匹配的元素时可能会有一些变化,这可能是一个问题
jQuery不一定按照选择器的顺序返回元素,而是按照元素在页面上的显示顺序返回,因此这不一定会复制您正在寻找的“异或”行为
更准确地说,您需要更明确的内容:
var el = $('div.rColInnerL:first');
if( !el.length ) {
el = $('div.box300.bdr.search:first');
if( !el.length ) {
el = $('h2.blt13:first');
}
}
以下是jQuery不按选择器顺序返回元素的示例:
<body>
<div id="first">first</div>
<div id="second">second</div>
</body>
尽管选择器中的#second
是第一个,但第一个匹配项显示为#first
元素,因为它在文档中位于第一位
示例:所选答案对我不起作用 我用了这个:
var container=$('div.rColInnerL:first')[0]|
$('div.box300.bdr.search:first')[0]|
$('h2.blt13:first')[0];
$(container.before('helloworld!'));
你能解释一下你想要实现的目标吗?确切的行为是什么?您期望的是什么?似乎他的div可以有一个或多个类,因此可能会被选择多次。是的,但当他说只能使用其中一个时,很难说他是否指第一个(可以使用first()
)很抱歉,在大多数情况下,一个页面上只有一个适用的div,但是有一个存在2的边缘案例。在本例中,使用.first()可以解决这个问题,因为我不太在意顺序,主要是避免在页面上进行多次选择。干杯。只有当选择器的顺序与页面上的潜在顺序相同时,此选项才有效。在OP的情况下,它更加复杂,因为它不是一个元素是否存在的问题,而是一个元素是否存在的问题,而是另一个不适用于选择目的的问题。
alert( $('#second, #first')[0].id ); // alerts "first" instead of "second"