javascript - 如何区分内联链接和独立链接

标签 javascript jquery html css web

使用属性选择器将图标应用到链接,或者通过脚本添加类是很常见的。例如:

// HTML
<a href="foo.doc">This is an ordinary text link</a>

// CSS

a[href$=".doc"] {
    background: url('bar.jpg') 0 0 no-repeat;
    padding-left: 2em;
}

(etc)

这在独立链接上看起来很好,我指的是这种类型的东西:

<p>Some paragraphs of text</p>
<p><a href="foo.pdf">Get the full report in a massive pretty PDF</a></p>
<p>More paragraphs</p>

但是在内联链接上看起来很糟糕,我指的是这种东西:

<p>Lorem ipsum dolor sit amet, <a href="foo.pdf">consectetur adipiscing</a> elit ... </p>

我希望能够有选择地将图标应用于第一种情况,而不是第二种情况。

那么有没有一种方法可以可靠地区分两者(使用我想象的脚本)?

尝试过 STFW,但如果这只是我的术语失败,我深表歉意。

最佳答案

为了区分两者,您可以使用 jQuery 将每个 anchor 与包含 anchor 的每个父级进行比较,如果它们匹配,则应用一种样式,如果不匹配,则应用另一种样式:

html:

<p>
Lorem ipsum dolor sit amet <a href="">link inside a paragraph with other text</a> Lorem ipsum dolor sit amet.
</p>

<p>
<a href="">link alone in a paragraph</a>
</p>

CSS:

.standalone {
  background-color: red;
}

.inline {
  background-color: green;
}

jQuery:

$(document).ready(function(){
    $('a').each(function(){
    var parent = $(this).parent().html().trim();
    var myTag = $(this).wrap('<p/>').parent().html().trim();//wrap in a temp container to get the <a> as well
    $(this).unwrap();

    if(parent === myTag) {
        $(this).addClass('standalone');
    } else {
        $(this).addClass('inline');
    }
  })
});

https://jsfiddle.net/y40o11hu/2/

这将为每个链接执行此操作,但初始选择器可以是您想要的任何内容,因此可以将其缩减为 $('a[href$=".doc"]') 或其他内容。

关于javascript - 如何区分内联链接和独立链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039297/

相关文章:

javascript - jquery 预览图像不起作用

javascript - 使用 GLTFLoader : RangeError: Invalid typed array length: 4 加载 gltf 文件时出错

javascript - 现有选项卡的样式看起来像单选按钮

javascript - Ajax函数不发送数据onclick

jquery - Div 不会重新定位并出现在 .mouseover 上

html - CSS 反射 : Can I make it scale & Skew?

javascript - 显示 :none style not working

jquery - 如何在jquery中的每个li的三个之后插入一个新的li

javascript - 冲突的 jQuery/JavaScript?

html - 使用 css 创建 100% 宽度中间列的最佳方法