javascript - 检测所有 URL 并使其可点击,并将图像包装在标签 JSON 文件中
问题描述
我正在尝试从谷歌电子表格解析 JSON 提要。
其中有:
- 网站网址;和,
- 以 jpg、jpeg、png 和 jfif 结尾的图像 URL。
在此脚本下方,将所有 URL 转换为可点击的链接。哪个工作正常。我还希望所有图像都包含在标签中。
//Parse all URLs to links
$(function() {
$('.box-table').each(function() {
$(this).html($(this).html().replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<a class=abbr href="$1">$1</a> '));
});
})
这是我将所有图像包装在标签中的相当糟糕的尝试。
//Parse all URLs to links
$(function() {
$('.box-table').each(function() {
$(this).html($(this).html().replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<img class=abbr" src="$1">$1</img> '));
});
})
有任何想法吗?
谢谢
解决方案
您需要从 DOM 中实例化元素,而不是直接将字符串插入页面。在 JQuery 中执行此操作的一种很好且简洁的方法,例如使用图像,如下所示:
$('<img />', { src: 'SRC_URL', class: 'abr' });
insertAfter
您可以将其分配给一个变量,然后使用append
或任何允许节点操作的函数将其简单地插入到 dom 节点中。
仅供参考,vanilla JS 提供了一个更好的图像实例化过程:
var img = new Image();
img.src = 'myImageUrl';
img.onLoad = function() {
// image loaded
}
回到 jQuery... 如果你想将img
标签嵌套在一个div
节点中,你可以这样做:
$('<div />', { class: 'parent-div'} ).append(
$('<img>', { src: 'SRC_URL', class: 'abr' })
);
您也可以将其分配给一个变量,您将拥有一个div
带有嵌套标签的img
标签。
使用您的代码,我们最终会得到这样的结果(未经测试,它假定您的代码有效):
//Parse all URLs to links
$(function() {
$('.box-table').each(function() {
$(this).html($(this).html().replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, jQuery('<img />', { class: "abbr" src: "$1" }));
});
})
推荐阅读
- ios - 如何在 Xcode 视图层次结构中拥有深度视图?
- postgresql - PostgreSQL 函数的返回类型
- java - 如何避免为使用带有firestore的snapshotListener删除的消息调用onEvent(QuerySnapshot快照,FirestoreException错误)?
- laravel - 如何在 Laravel 中使用 Carbon 获得时间差
- hive - 有没有办法比较两个hdfs集群的一张表的结果和同一个sql
- javascript - 不显示伪类,如何在 IE11 中修复?
- android - Flutter 的 VS 代码扩展
- c# - 使用 StringBuild 将字符串更改为小写,仅用于不均匀定位的字母
- docker - docker命令可以启动mysql容器,但是docker-compose.yml不能,可能是什么原因?
- machine-learning - 多类案例的混淆矩阵,所有评估指标的估计