如何选择包含img作为直接子项的最外层标记
How can I select outermost tag which contains img as direct child
我有以下标记
var divs = $('div:has(img)').not(':parent:has(>img)');
divs.css('border','1px solid red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div><!-- get this div -->
1
<img alt='#' />
<div>
2
<img alt='#' />
<div>
3
<img alt='#' />
<div>
4
<img alt='#' />
</div>
</div>
</div>
</div>
<div><!-- get this div -->
5
<img alt='#' />
<div>
6
<img alt='#' />
</div>
<div>
7
<img alt='#' />
</div>
</div>
<div>
<div><!-- get this div -->
8
<img alt='#' />
</div>
</div>
从中,我需要选择包含img标记的最外面的div,如果它的父级包含img
标记作为直接子级,我不想选择div。我试过var divs = $('div:has(img)').not(':parent:has(>img)');
,但它只有在有父级时才有效。
您的主要问题是:parent
选择器没有执行您认为的操作。CSS规则永远不会上升。因此,如果需要向上扩展,则需要使用JavaScript(使用函数.parent()
,它在CSS选择器中没有等效的选择器,甚至jQuery扩展选择器也没有)。
var divs = $('div:has(>img)').filter(function(i, n) { return !($(n).parent().children('img').length); });
divs.css('color','red');
然而,由于CSS中的第一个C("级联"),这将把所有都涂成红色:在1、5和8上声明红色将把这些div中的所有文本涂成红色。
相关文章:
- 选择“选择选项”时显示文本.怎么做
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- Angular始终选择选择元素中的第一个选项
- 使 ajax 请求和成功数据显示在 id <选择>选择>部分中
- 根据用户选择选择页面
- 在cordova 4 iOS中,慢速键盘/选择选择器进行响应
- jquery:输入选择器未选择:选择元素
- 存储值后,重复重新选择选择下拉菜单的第一个选项
- 无法预先选择选择值
- 输入:选中,选项:选择选择器
- 引导选择选择器焦点事件
- Javascript-从数组中选择选择器中的值
- 根据包含字符串的值选择<选择> <选项>
- 如何强制用户使用引导程序选择<选择>选项
- 如果单击后无法选择选择框中的值
- 选择选择2的允许清除选项时如何捕获事件
- HTML 浏览器的“文本”选择:选择整个单词(如在 iBooks 中)
- Jquery 从选择选择的插件过滤结果
- 选择选择菜单选项上的加载页面
- 错误:类型错误: $(..).选择选择器不是使用 requireJS 加载的函数库