如何检查 href 属性是否包含字符串?

How to check if href attribute contains a string?

我想从页面获取所有 "a" 标签,获取其 "href" 属性并检查此 href 中是否为文本“.pdf”。所以我将所有 a 标签放入 tags 变量中,然后使用 each() 函数检查每个 "a"(作为 tag)。但是代码:

  if ($(tag).indexOf('.pdf') > 0) 
    console.log($(tag));

不工作。为什么?为什么我不能在 href 上使用 indexOf?我尝试使用 search() 函数,但它也不起作用。

所以我想 - 好吧,这个 href 有问题。让我们把它作为一个文本。

但是代码:

  var text = $(tag).text();
    console.log(text);

也不工作。谁能告诉我为什么?

代码片段有意包含错误 - 以显示我遇到的问题。

提前致谢。

(function($){
  var tags = $('a');
  $(tags).each(function() {
        var tag = $(this).attr('href')     
        
        if ($(tag).indexOf('.pdf') > 0) 
          console.log($(tag));
            
        var text = $(tag).text();
        console.log(text);
  });
}(jQuery));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<html>
  <a href="https://www.test.com/example.pdf" target="_blank">Link with ".pdf"</a>
  <a href="https://www.test.com/" target="_blank">Link without ".pdf"</a>
</html>

调用 indexOf 时无需额外 $(tag)tag 此时是一个字符串,您不需要将其设为 jQuery 对象。只需调用 tag.indexOf('.pdf') > 0。对于字符串,您还可以使用 tag.includes('.pdf') 或使用 tag.substr(tag.length - 4, 4) === '.pdf' 以使其更加精确。