JavaScript/jQuery - grabbing an integer from an element's id

javascript, jquery, regex

Solution

You could try:

var n = $(this).attr('id').match(/link-(\d+)/)[1];

This fetches the `id` attribute, matches against the pattern `link-(\d+)` (which means `link-` followed by one or more digits), and then extracts the first subexpression match (the part in the parentheses `\d+`), which should be the number you are looking for.

If you need to work with `n` as an integer instead of a string, you should should use `parseInt`, making sure to specify base 10:

var n = parseInt($(this).attr('id').match(/link-(\d+)/)[1], 10);

If your `id` attributes are not guaranteed to begin with `link-` followed by one or more digits, and you would like to catch this case instead of throwing an error, you should check the return value of `match`:

var match = $(this).attr('id').match(/link-(\d+)/);
if (match) {
    var n = parseInt(match[1], 10);
    alert(n);
} else {
    // do something else if they don't match
}

Problem

From the following markup. ``` <div id="my-div"> <a href="#" id="link-1">Somewhere</a> <a href="#" id="link-2">Somewhere else</a> </div> ``` What are some options, using jQuery selectors and JavaScript for grabbing the integer in the ids? For example. ``` $("#my-div a").click(function(){ $(this).id // ... somehow grab n from "link-n" alert(n); }); ```

Original source