jquery 检查链接(不是URL)是否包含某些文本(,jpg、.gif、.png)

oxalkeyp  于 2023-04-29  发布在  jQuery
关注(0)|答案(3)|浏览(174)

只是为了给予一个想法,我想做的是这里的一个示例代码:

$(function(){
  if ($('.maybe > div > a.link:contains(".JPG, .jpg, .gif, .GIF")').length) {
    alert('hello');
});

我想检查一些链接的内容是否包含所有图像扩展名的点和字母,如

<div class="maybe">
 <div>
   <a class="link" href="someURL">thisIsAnImage.jpg</a>
   <a class="link" href="someURL">thisIs**NOT**AnImage.pdf</a>
 </div>
</div>
 <div class="maybe">
 <div>
   <a class="link" href="someURL">thisIs**NOT**AnImage.zip</a>
   <a class="link" href="someURL">thisIsAnotherImage.png</a>
 </div>
</div>

div和链接是由php动态生成的,所以没有办法知道页面生成后会有多少链接和div。
如何正确地编写代码?
非常感谢你帮我解决了这个问题。

jckbn6z7

jckbn6z71#

这是我的第一直觉:

$('.maybe .link').each(function () {
    if ($(this).text().toLowerCase().match(/\.(jpg|png|gif)/g)) {
        console.log("yay I did it");
    }
});

在链接文本上使用toLowerCase(),这样就不必同时检查大小写。然后使用String。match(regex)与regex组匹配所有文件扩展名。
希望这有帮助!
编辑:这里有一个jsfiddle的例子。打开JavaScript控制台以查看控制台的输出。log语句。http://jsfiddle.net/9Q5yu/1/

fjaof16o

fjaof16o2#

我建议

// selects all the 'a' elements, filters that collection:
var imgLinks = $('a').filter(function(){
    // keeps *only* those element with an href that ends in one of the
    // file-types (this is naive, however, see notes):
    return ['png','gif','jpg'].indexOf(this.href.split('.').pop()) > -1;
});
// I have no idea what you were doing, trying to do, wanting to do or why,
// but please don't use 'alert()', it's a horrible UI:
if (imgLinks.length) {
    console.log('hello');
}

以上是一个比较简单的、幼稚的检查;因为它简单地将href拆分为.字符,然后测试数组中的最后一个元素(由split()返回)是否等于数组中的一个元素。对于具有查询字符串的任何图像,此操作都将失败,例如http://example.com/image2.png?postValue=1234
鉴于评论中的澄清,我将上述内容修改为:

var fileTypes = ['png','gif','jpg','gif'],
    imgLinks = $('a').filter(function(){

    return (new RegExp(fileTypes.join('|') + '$', 'gi')).test($(this).text());
});

参考文献:

6vl6ewon

6vl6ewon3#

var productImages = "https://image.spreadshirtmedia.com/image-server/v1/mp/products/T210A2PA4301PT17X41Y37D1030409081W24999H24999/views/1,width=500,height=500,appearanceId=706,backgroundColor=F2F2F2.jpg";

var pngWordCheckExits = productImages.includes('png');
var jpgWordCheckExits = productImages.includes('jpg');
    //if(pngWordCheckExits === true  || jpgWordCheckExits === true){
      if (pngWordCheckExits || jpgWordCheckExits) {
        await repository.processProductImageBoth(productImages,campaignNumber, productSKU, productID, printSide, campaignAndProductSKU);
    }else{
        console.log("not found jpg & png on string")
    }

相关问题