假设我想从类的后面获取数字,例如:aside300 - 我会抓住300并将其分配给变量,或者320会将320分配给变量。 到目前为止,我已经得到了以下jQuery:
$('[class*=aside]').each(function(index) { // For each of the elements that have a class containing aside
var asidenum = $(this).attr('class') // Grab all the classes on that element
.split("aside") // Split at aside
.pop(); // Pop the last item from the array (if aside is the last class then this is great, if not - not so great)
});
但是,你可能会发现,如果你在“搁置”类之后有任何东西,这将不起作用 - 例如,你在元素上的类是“aside300 anotherclass” - 变量将是'300 anotherclass'
我想过只是在空间分裂,将每个类分配到数组中然后我不确定如何抓住'旁边'项并将其拆分以获取数字...
如果有人有任何指示,或者我完全以错误的方式处理它,那就太棒了!
干杯
编辑:由于人们已经建议了数据属性,是的,我很乐意使用它,这是我的第一个想法,但不幸的是,这不是一个选择。答案 0 :(得分:4)
你可以这样做:
var num = $(this).attr('class').match(/\baside(\d+)\b/)[1];
但我强烈建议您查看数据属性和jQuery's API for them。
答案 1 :(得分:4)
如果data-
attributes是一个选项,您可以这样做:
<div class="aside" data-aside="320">
然后你可以这样做:
$('.aside').each(function() {
var asidenum = $(this).data('aside');
});
或者在jQuery&lt; 1.4.3,使用.attr('data-aside')
代替......你可以从上面看到它有一些优点:更简单的代码,你可以使用的CSS类,以及多更高效的选择器。
这在HTML5中完全有效,它不是有效但在HTML4中没有问题就可以正常工作。
答案 2 :(得分:0)
在类上使用正则表达式\ baside([0-9] +)\ b来捕获数字。