获取变量表单部分类选择器jQuery

时间:2019-05-10 00:39:55

标签: jquery

如何将类选择器的其余部分存储为foreach循环的变量

例如:

<div class="sel_child1">something</div>
<div class="sel_child2">something</div>

我知道我可以使用:

jQuery( "[class^='sel_']" )

但是我需要foreach循环的其余部分,因为该类的第二部分是要定位的子元素,在您问我知道我应该使用数据属性或另一种方法之前,但我使用的CMS不会让我。

div也可能具有其他不相关的类。

1 个答案:

答案 0 :(得分:3)

您可以使用.attr("class")方法获取整个类字符串。从那里开始,就可以将其分为一系列类,找到以"sel_"开头的类,然后存储第二部分。

$("[class*='sel_']").each(function() {     //match all classes with sel_ in them
  const child = $(this)         
    .attr("class")                         //get the class string
    .split(" ")                            //break it into individual classes
    .find(n => n.startsWith("sel_"))       //find the one that starts with sel_
    .split("_")[1];                        //split it on _ and take the second piece

  console.log(child);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="sel_child1 unrelated">something</div>
<div class="unrelated sel_child2">something</div>

还有更简洁的RegEx替代方案...

$("[class*='sel_']").each(function() {
  const child = $(this).attr("class").match(/(?:^|\s)sel_([^\s]*)/)[1];
  console.log(child);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="sel_child1 unrelated">something</div>
<div class="unrelated sel_child2 xsel_child3">something</div>


RegEx参考

(?:^|\s)-字符串的开头(非捕获)

sel_-“ sel _”

([^\s]*)-直到下一个空格(捕获)的所有内容