2012-02-14 93 views
35

我的页面上有一个按钮,其类别为comment_like,ID为comment_like_123456,但最后的数字是可变的;可能是1到1000000.jQuery /从字符串获取数字

单击此按钮时,我需要抓住最终号码,以便我可以在具有相同后缀的其他元素上运行任务。

有没有简单的方法在jQuery中抓取这个数字?

$('.comment_like').click(function() { 
    var element_id = $(this).attr('id'); 

    // grab number from element ID 

    // do stuff with that number 

}); 

回答

76

你可以这样说:

var suffix = 'comment_like_123456'.match(/\d+/); // 123456 

对于按钮:

$('.comment_like').click(function(){ 
    var suffix = this.id.match(/\d+/); // 123456 
}); 
+1

what if var suffix ='(123)131-2312'; – Swaraj 2014-09-18 13:50:31

1

jQuery是不是灵丹妙药。使用Javascript!

var temp = "comment_like_123456".split("_") 
alert(temp[2]) 
1

只需获取id并通过正则表达式运行它。

$(mybutton).click(function() { 
    var num = parseInt(/^.*\_(\d+)$/.exec(this.id)[1]) 
}); 
+0

exec后的[1]是什么? – user938363 2015-10-21 20:54:31

+0

@ user938363它获得匹配字符串中的第一个捕获组(即,第一组括号之间的所有内容,由'\ d +'匹配的内容 - 一个数字) – mgibsonbr 2015-10-21 22:39:38

3

这是普通老式的正则表达式任务,它无关的jQuery:

"comment_like_123456".match(/\d+/) 

=> ["123456"] 
10

在你的点击处理程序:

var number = $(this).attr('id').split('_').pop(); 
+0

只要数字总是以下划线结尾。只要html或要求不改变,紧密耦合:) – Sarfraz 2012-02-14 19:41:16

3

http://jsfiddle.net/hj2nJ/

var x = 'comment_like_6846511'; 
var y = ''; 

for (i = 0; i < x.length; i++) 
{ 
    if ("" + parseInt(x[i]) != "NaN") //if the character is a number 
     y = y + x[i]; 
} 

document.write(y);