如何编写jQuery选择器匹配所有包含img子元素的a标签?
方法1:直接使用jQuery内置:has()选择器(最简便)
你可以直接用jQuery原生支持的:has()选择器定位子元素包含图片的链接:
// 仅匹配直接子元素为img的a标签 $('a:has(> img)').attr('target', '_blank'); // 如果需要匹配子节点任意层级包含img的a标签,去掉>即可 // $('a:has(img)').attr('target', '_blank');
方法2:自定义伪类选择器(和你现有external选择器写法一致)
如果你希望和之前的:external选择器保持相同的定义风格,可以自定义伪类:
// 定义自定义伪类 $.expr[':'].imgLink = function(obj) { // 检查a标签的直接子元素是否存在img标签 return Array.from(obj.children).some(el => el.tagName.toLowerCase() === 'img'); }; // 使用自定义选择器 $('a:imgLink').attr('target', '_blank');
组合使用示例
你还可以把两个自定义选择器组合,仅给外部图片链接加_blank属性:
$('a:external:imgLink').attr('target', '_blank');
内容的提问来源于stack exchange,提问作者Still Learning
相关产品推荐
相关产品推荐

