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
}