选择不在锚点中的跨度

Posted

技术标签:

【中文标题】选择不在锚点中的跨度【英文标题】:Select spans not in an anchor 【发布时间】:2014-12-18 17:05:03 【问题描述】:
<span>Item 1</span>
<span>Item 2</span>
<a href="#"><span>Item 3</span></a>
<span>Item 4</span>
<a href="#"><span>Item 5</span></a>
<span>Item 6</span>

我将使用什么选择器之王来选择未包含在锚标记中的跨度(在本例中为项目 1、2、4 和 6。

【问题讨论】:

有几种不同的方法可以做到这一点,一种是.filter,例如:$('span').filter(function(i)return $(this).parent('a').length) 谢谢,这很接近,但这会返回带有锚包装器的跨度。与此相反的是什么? @MattCoady $('span').filter(function(i)return !$(this).parent('a').length); 是的,我的错。我忘了感叹号。在我上面得到它。正如我所说,有六种或更多方法。甚至.not 【参考方案1】:

jQuery 主要使用 css 选择器,而在 css 中我不认为有任何“父选择器”。但是,您可以在 jquery 的帮助下使用 css 选择器的组合来定位不是如下锚子的spans...

$("span").not("a span");

$(function()
    $("span").not("a span").css("background-color", "red");
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<span>Item 1</span>
<span>Item 2</span>
<a href="#"><span>Item 3</span></a>
<span>Item 4</span>
<a href="#"><span>Item 5</span></a>
<span>Item 6</span>

【讨论】:

哦,这很简短。很好,谢谢!我将其更改为“a > span”以防止任何进一步的选择。【参考方案2】:

下面是我的方法

var sp = $('span');
var only = [];
for (var i = 0; i < sp.length; i++) 
    if ($(sp[i]).parent('a').length === 0) 
        only.push(sp[i]);
    

console.log(only)

var sp = $('span');
var only = [];
for (var i = 0; i < sp.length; i++) 
  if ($(sp[i]).parent('a').length === 0) 
    $(sp[i]).css('background', '#ccc');
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span>Item 1</span>

<span>Item 2</span>

<a href="#"><span>Item 3</span></a>

<span>Item 4</span>

<a href="#"><span>Item 5</span></a>

<span>Item 6</span>

【讨论】:

以上是关于选择不在锚点中的跨度的主要内容,如果未能解决你的问题,请参考以下文章

LitePicker date picker js - 在日期的当前锚点中添加一个额外的div。

如何在锚文本后添加跨度?

ARFrame 锚点中不存在 AREnvironmentProbeAnchor

HTML 隐藏锚点中的URL

由于 html 锚点中的 onclick 事件导致页面加载缓慢

如何使用锚标签点击特定跨度