2013-02-27 66 views
1

我一直在尝试在SO中看到其他帖子,但我只是无法围绕代码示例进行包装。请注意,我仍然在学习jQuery/JavaScript,对此非常感激。jQuery:检测src =属性中的字符

说我有许多不同的页面,这些图片在网站上:

第1页:<img alt="..." src="images/ss-project-name.png">

第2页:<img alt="..." src="images/ss-another-project-name.png">

第3页:<img alt="..." src="images/ss-yet-another-project-name.png">

有很多这样的图片周围的图片,编辑标记是不可能的,我需要给他们添加一个class="screenshot"

所以我最终会是这样的:

<img alt="..." src="images/ss-project-name.png" class="screenshot">

这里有一些脚本,我尝试过,他们当然不工作,但它可以给你的一个想法是什么什么我试图做到:

尝试#1:

$('img').each(function(){ 
    if ($(this).attr('src') == "ss-"){ 
     $(this).addClass('screenshot'); 
    } 
}); 

尝试#2:

$("img:has([src^='ss-'])").addClass('screenshot'); 

任何帮助,这是非常感谢。

谢谢。

回答

1

你接近,这应该工作:

$("img[src*='ss-']").addClass('screenshot'); 

你的第一次尝试没有成功的原因是因为你正在测试的src属性是完全ss-不包含子。第二次尝试没有成功,因为:has()jQuery docs说:

选择包含了 指定选择相匹配的至少一种元素。

而且还因为[src^='ss-']将寻找元素与src开始ss-,并且在你的情况下,他们开始用字符串images/

+0

当,我太亲近了!我将在下一次尝试中使用'*':)。这工作完美。我选择了你的答案,因为我解释了为什么我试过的东西没有工作,加上jQuery文档中的信息(和链接)以供参考。非常感谢。 – 2013-02-28 04:21:38

0

试试这个代码

$('img').each(function(){ 
     var src = $(this).attr('src'); 
     if (src.substr(0,2) == "ss-"){ 
      $(this).addClass('screenshot'); 
     } 
    }); 
+0

我试过你的代码,但没有奏效。尽管感谢您的帮助。 – 2013-02-28 04:24:24

1

你可以试试这个选择器:$('img[src*="images/ss-"]').addClass('screenshot');

它会发现所有来自图像目录的文件都以ss-开头。作为选择器的一部分添加images/将避免匹配文件,如<img src="media/miss-you-so-much.png" />

+1

我希望我可以选择两个答案作为答案。你的解决方案效果很好是的,我同意添加'images /'文件夹是有帮助的。给你一个upvote。非常感谢。 – 2013-02-28 04:23:49