使用jQuery获取字符串的一部分

9

HTML 代码:

<div id="block-id-45"></div>

如何使用jQuery获取字符串中的数字"45"


你已经知道了45,你要找的是什么模式?.. 如果你知道名称(或部分名称),jQuery可以帮助你获取div元素,如果你想拆分字符串,那就使用split/regex等语言。 - Quintin Robinson
@Quintin - 我猜想模式是ID的开头 ... 类似于 block-id- - Peter Ajtai
他并不是在寻找一个模式,只是想要获取该模式的一部分,并且高比率的答案并不能解决这个问题。他只是问:“我怎样可以从字符串中获取数字“45”?” - Erdinç Çorbacı
由于您的id看起来像block-id-45,所以当$(this)返回您的目标div元素时,$(this).attr("id").split("-")[2]将返回数字45。 - Janaka R Rajapaksha
3个回答

31

要返回 id 属性末尾的数字,请使用:

$(this).attr("id").match(/[\d]+$/);

如果$(this)<div id="block-id-45"></div>,上面的代码将返回45

jsFiddle示例

以上代码的工作原理是使用.attr()检索元素的id,然后查看id并使用.match()恢复其末尾的数字。/[\d]+$/是一个正则表达式。 [\d]表示一个数字,+表示一个或多个(数字),而$表示行的结尾。


你可以使用这个函数通过属性开始选择器[name^=value].each()来获取所有以block-id-开头的div标签末尾的数字:

实际用途:

$(function() {

      // Select all DIS that start with 'block-id-'
      //   and iterate over each of them.
    $("div[id^='block-id-']").each(function() {

          // You could push this data to an array instead.
          // This will display it.
        $("body").append( "Id number: " + 
                            // This is the number at the end
                          $(this).attr("id").match(/[\d]+$/) +
                          "<br/>" );
    });
});​

jsFiddle示例


8

对于这个问题,您不需要(或特别想要)使用jQuery(它非常适用于许多其他事情,但对于这个问题来说并不是特别必要的)。可以使用纯JavaScript和DOM操作:

var div = document.getElementById('block-id-45');
var n = div.id.lastIndexOf('-');
var target = div.id.substring(n + 1);

实时示例: http://jsbin.com/osozu

如果您已经在使用jQuery,您可以将第一行替换为:

var div = $('#block-id-45')[0];

...但是几乎没有任何理由这样做。


1
使用jQuery,简单地编程如下:

$("[id='block-id-45']").attr("id").split("-")[2]

对于所有的块ID-##,您可以使用来自彼得的答案的掩码模式:

$("[id^='block-id-']").click(function(){

    row_id = $(this).attr("id").split("-")[2];
    .............
    .............
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接