javascript - 在背景图像中使用正则表达式获取 div

标签 javascript jquery regex background-image

我正在尝试用纯 js 或 jQuery 编写脚本来捕获每个 <div>在其 CSS 中使用特定的正则表达式 background-image属性(property)。

<div style="background-image: url('the_regex/http://example.org/image.jpg')>
<div style="background-image: url('the_regex/http://example.org/another.jpg')>

我从收集所有 <img> 的现有功能脚本开始在 src="" 中具有正则表达式的元素属性。它正在寻找这样的元素:

<img src="the_regex/http://example.org/img.jpg">
<img src="the_regex/http://example.org/img2.jpg">

有了这个

  this.$imgs = $("img[src*='" + this.the_regex + "']");

所以这适用于 <img>元素,但我的网站都是<div>background-image .


From this question我知道如何从给定的 div 获取 url,但我想将背景图像中带有此正则表达式的所有 div 收集到一个变量中,因此我可以 each他们并删除那个正则表达式......

首先,脚本是 sencha-src-fallback.js .如果满足特定条件,它最终会从 src 中删除正则表达式。

最佳答案

您可以结合正则表达式和 .filter() 函数来实现您想要的。基本上,我们运行使用 .css() 方法检索的 background-image 属性,并检查它们是否与模式匹配。如果是,我们将返回元素列表(您稍后可以对其进行操作):

在下面的示例中,我希望背景图像匹配模式 /http:\/\/placehold\.it/gi(即匹配 http://placehold. it 并作为全局且不区分大小写的匹配项),如果匹配,我将它们向上滑动。当然,您应该在这里使用自己的模式并链接替代的下游 jQuery 方法,我将其用作概念验证:)

$('div').filter(function() {
    return $(this).css('background-image').match(/http:\/\/placehold\.it/gi);
}).slideUp();

它适用于通过 CSS 或通过内联样式属性指定的背景图像。

在此处查看演示:http://jsfiddle.net/teddyrised/nmw9a4hk/2/


OP 询问是否可以在过滤器函数之外单独定义正则表达式。是的,这是可能的:

var pattern = new RegExp("http:\/\/placehold\.it", "gi");

$('div').filter(function() {
    return $(this).css('background-image').match(pattern);
}).slideUp();

请在此处查看更新的演示:http://jsfiddle.net/teddyrised/nmw9a4hk/12/

关于javascript - 在背景图像中使用正则表达式获取 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877090/

相关文章:

regex - 重命名文件 Mac 命令行

javascript - 如何使用 Javascript 正则表达式匹配乱序字符串

Javascript/jQuery 设置时间延迟,从 DOM 中弹出底部元素

javascript - 单击按钮时显示 div,然后在按钮外部单击时隐藏此 div

javascript - 如何隐藏 Chart.js V2.0 绘制的组合折线图和条形图中的点

python - 如何从正则表达式结果中删除不必要的字符?

javascript - Google map v3 infoWindow addDomListener 用于 HTML 按钮

javascript - 登录路由返回未通过身份验证的消息

javascript - 从 Android native 浏览器上传时文件类型为空字符串

javascript - 聊天/聊天盒系统的最佳技术是什么?普通JS,JQuery,Websocket或其他?