首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试查找包含该数字的属性,然后匹配该数字。

尝试查找包含该数字的属性,然后匹配该数字。
EN

Stack Overflow用户
提问于 2020-01-30 18:10:28
回答 2查看 36关注 0票数 0

试图找到一个包含“启动-覆盖-”的属性,因此即使在之前和之后都有其他类,这个脚本仍然可以工作。找到它之后,将“活动”类添加到匹配号div中。到目前为止,这就是我所拥有的,但是如果有其他类围绕着“启动-覆盖”,它将无法工作。><帮助plz。

代码语言:javascript
复制
$('div[class*="overlay-"]').click(function(){
  var overlaynum = $(this).attr('class').match(/\d+$/)[0];
  $('.overlay-container-'+overlaynum).addClass('-active');
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class=“other-class overlay-1”>click me</div>
<div class=“other-class overlay-2”>click me</div>

<div class=“overlay-container-1”></div>
<div class=“overlay-container-2”></div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-30 18:20:44

只有当覆盖号出现在launch-overlay-之后时,才能使用捕获组获取覆盖号。

代码语言:javascript
复制
var overlaynum = this.className.match(/launch-overlay-(\d+)/)[1];
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^  ^^^−−− capture group 1

请注意,我是通过[1]而不是[0]获得号码的,因为它是第一个捕获组(我们不希望在[0]中完全匹配)。

活生生的例子(我必须修复其中的一些东西,但它们似乎与问题无关):

代码语言:javascript
复制
$('div[class*="launch-overlay-"]').click(function(){
  // Get the number from the relevant class
  var overlaynum = this.className.match(/launch-overlay-(\d+)/)[1];
  $('.overlay-container-'+overlaynum).addClass('-active');
});
代码语言:javascript
复制
.-active {
    color: blue;
    font-weight: bold;
}
代码语言:javascript
复制
<div class="other-class launch-overlay-1 other">click me - I have another class</div>
<div class="other-class launch-overlay-2">click me</div>

<div class="overlay-container-1">overlay container 1</div>
<div class="overlay-container-2">overlay container 2</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

票数 0
EN

Stack Overflow用户

发布于 2020-01-30 18:38:24

您的代码的问题是,您不是选择id,而是选择整个匹配。使用捕获组。

var overlaynum = $(this).attr('class').match(/overlay-1(\d+)/);

但就我个人而言,我甚至不会在匹配类中使用reg exp。使用数据属性。

代码语言:javascript
复制
$("[data-toggles]").on("click", function () {
  var selector = $(this).data("toggles")
  $(selector).toggleClass("active")
})
代码语言:javascript
复制
.active {
  background-color: yellow;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="other-class" data-toggles=".overlay-container-1">click me</div>
<div class="other-class" data-toggles=".overlay-container-2">click me</div>

<div class="overlay-container-1">X</div>
<div class="overlay-container-2">Y</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59992066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档