替换<a>如果它以字符串JQuery结尾
Replace <a> if it ends with a string JQuery
我想找到所有具有以某些特定图像扩展名结尾的href
属性的锚标记。我想用图像标签代替它们。
我尝试过以下内容,但它与任何锚都不匹配:
var imageTypes = ["jpeg", "jpg", "gif", "png", "bmp", "tif"];
$(".tfeedpost-postcontent a").each(function () {
var actualA = $(this);
var actualHref = $(this).attr("href");
if (actualHref.match(imageTypes)) {
actualA.replaceWith("<img src='" + actualHref + "'>");
}
});
我也试过这个:
if (actualHref.match(imageTypes + "$")) {
//...
}
如果我放以下内容,它是有效的,但显然只有一种类型的图像。
if (actualHref.match("jpg$")) {
//...
}
我怎样才能找到任何扩展的匹配项?
您可以使用管道运算符(在正则表达式中充当OR),并要求它前面有一个点,并出现在字符串($)的末尾:
if (actualHref.match(/'.(jpeg|jpg|gif|png|bmp|tif)$/)) {
....
}
下面的扩展也将正确处理那些具有看起来像图像扩展的参数或哈希的URL
if (actualHref.match(/^[^?#]*'.(jpeg|jpg|gif|png|bmp|tif)($|[?#])/)) { ...
此表达式要求在匹配的扩展名之前不出现"?"或"#",并允许其中一个出现在它的正后方。
以下操作将满足您的需要:
var imageTypes = ["jpeg", "jpg", "gif", "png", "bmp", "tif"];
$(".tfeedpost-postcontent a").each(function () {
var url = $(this).attr("href");
var ext = url.split('#').shift().split("?").shift().split('.').pop();
if ($.inArray(ext, imageTypes) > -1) {
$(this).replaceWith("<img src='" + url + "'>");
}
});
jsFiddle
edit:更新以反映epascarello和trincot 提到的案例
如果您想使用类型数组,请取出文件类型,并使用indexOf查看它是否在数组中
var fType = actualHref.split("/").pop().split(".")[1]
var isImg = imageTypes.indexOf(fType)>-1;
如果末尾有一个查询字符串,这种方法就会失败。您最好使用.pathname
而不是.href
相关文章:
- 字符串Jquery结构中的变量
- 在字符串 jquery 中添加空格
- 如何在字符串 jQuery 上调用函数
- 将 .val() 转换为字符串 jQuery
- 如何放置 PHP 字符串 jQuery 验证错误消息
- 查找字符串 jQuery/Javascript 的部分
- 从字符串 jQuery 中删除字符串
- 比较明显相等的字符串 JQuery
- 在字符串中使用 PHP 作为字符串.(JQuery)
- 比较两个字符串(jquery .text() 和文字字符串)
- 替换<a>如果它以字符串JQuery结尾
- 字符串jQuery剩余的空白数量
- 重新注册字符串jquery.Ui可拖动
- 字符串替换为另一个字符串jquery/javascript
- 如果子值与某个字符串JQuery匹配,则隐藏父元素
- 单击时从输入中删除字符串?jQuery
- 如何获取特定子字符串jquery之后的字符串
- 不能识别父-字符串JQuery中的子字符串
- 翻译KeyDown键码字符串(jQuery)
- 即使我没有引号来转义,它仍然说我有一个未闭字符串(Jquery)