2015-08-18 55 views
0

我有一个有很多类的元素,我想访问一个特定的类来获取它的最后一个数字(我意识到数据属性或ID可能是更好的选项,但现在我被困在课堂上)。我已经可以使用它的ID来选择元素,所以我只需要确定my-target- *的最后一个数字是什么。Javascript或JQuery字符串获取具有某些前缀的子字符串

<div class="foo bar apple my-target-1"></div> 

我想获取类我-靶*,然后从中提取1。

+2

它总是我的目标 - *? – KAD

+0

是的,它将永远是我的目标 - * – MicFin

+1

完美的情况下使用数据属性,而不是类 – epascarello

回答

2

循环遍历所有包含'my-target'的元素,假设它是最后一个类,按空格拆分类,得到最后一个类,用' - '拆分它,然后获取需要的值。

这里是一个工作示例:

$(document).ready(function(){ 
 

 
$("[class*= my-target]").each(function(){ 
 

 
    var extract= $(this).attr('class').split(' ').pop().split('-').pop(); 
 
    $("#result").html(extract); 
 
    
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="foo bar apple my-target-1"></div> 
 
<span id="result"></span>

+0

很好,实际回答问题 – AmmarCSE

+0

谢谢@AmmarCSE – KAD

0

也许是整洁,如果你使用的数据元素做到这一点

<div class="foo bar apple my-target-1" data-target="1"></div> 

你这样做会得到:

$('.my-target-1').data('target') 

这比解析类

+0

我不知道它是否是我的目标-1或2或100.我可以使用元素选择器选择元素或ID,但我需要访问该类并从中获取# – MicFin

+0

然后,您可以简单地使用'my-target'作为类的名称,而不是'my-target'并获取#。我的意思是,如果你有选择的元素,你可以访问数据元素来获得你需要的值 – rolo1091

1

这里更好的是一个jQuery选择器应该瞄准你的元素:

​​

但是,这可能是更普遍比你需要的:它使用的CSS 选择*=,所以这也将匹配相同的要素如下:

<div class="not-my-target"></div> 

你可以尝试选择的组合,以获得更多的东西具体:

$("[class^=my-target], [class*= my-target"]); 

这结合了CSS 开始与选择,用含有。

现在抢你从类名中所需的数据,你需要做一些字符串解析的class属性:

var numberToExtract = -1; 

var elem = $("[class*=my-target-]"); 

if (elem) 
{ 
    classes = elem.attr("class").split(/\s+/); 

    $.each(classes, function(idx, el) 
    { 
     if (el.startsWith("my-target-")) 
     { 
      numberToExtract = el.split("-").pop(); 
      return false; 
     } 
    }); 
} 
0

为了得到启动任何一个与班试试这个

$('div[id^=foo bar apple my-target]') 
0

如果您使用的是类,而不是一个数据属性卡,你可以提取的类从对象你”满弦ve found found with:

obj.attr('class') 

然后将其与使用字边界和捕获括号的正则表达式进行匹配提取'my-target-*'

0

末尾的数字您必须具有ID才能捕获特定的div或跨度内容。 小心,也许你有一个班级和一个小班。

<div id='id' class='myclass mysubclass' >Testing</div> 

所以,如果你想拥有类选择,请执行以下操作:

var className = '.'+$('#id').attr('class').split(' ').join('.')

,你将有

.myclass.mysubclass

现在,如果你想选择所有具有相同类的元素,例如div:

var class=$('.'+$('#id').attr('class').split(' ').join('.')) 

这意味着

var class=$('.myclass.mysubclass')

如果你想第二类为利用成元素

var class_name = $('#id').attr('class').split(' ')[1]多个类别;`

,或者你可以简单地使用var className = $('#id').attr('class');这将返回全名类和子类然后使用JQuery/JavaScript子串方法处理它。