От следующей разметки.
<div id="my-div">
<a href="#" id="link-1">Somewhere</a>
<a href="#" id="link-2">Somewhere else</a>
</div>
Каковы некоторые опции, с помощью селекторов jQuery и JavaScript для захвата целого числа в идентификаторах?
Например.
$("#my-div a").click(function(){
$(this).id // ... somehow grab n from "link-n"
alert(n);
});
]Это должен быть самый простой способ:[
] [var id = this.id.replace(/[^\d]/g,'')*1;
]
[]Он возвращает любые цифры из атрибута идентификатора в виде []номера [
] ([]*1[
] делает преобразование, аналогичное []parseInt[
]). В вашем примере:[
$("#my-div a").click(function(){
var n = this.id.replace(/[^\d]/g,'')*1;
alert(n); // alerts any number in the ID attribute
alert(typeof n) // alerts 'number' (not 'string')
});
] Пока предыдущий текст всегда остается неизменным, вы можете просто использовать метод substring , чтобы получить номер.
$(this).attr('id').substring(5)
var id = $(this).attr('id'),
regex = /(\d+)/,
matched = id.match( regex );
if ( matched ) {
alert( matched[1] )
}
Вы можете использовать регулярное выражение для анализа числа:
var match = /link-(\d+)/.exec($(this).attr('id'));
var num = match[1];
Я обычно делаю что-то подобное:
$("#my-div a").click(function(){
var match;
if (match = $(this).attr('id').match(/link-(\d+)/)) {
var number = parseInt(match[1],10);
alert(number);
}
});
Вы можете попробовать:
var n = $(this).attr('id').match(/link-(\d+)/)[1];
Это извлекает атрибут ID
, совпадает с рисунком Link - (\ d +)
(что означает Link-
одним или несколькими цифрами), а затем извлеките первое совпадение под воздействием (часть в скобках \ d +
), что должно быть число, которое вы ищете.
Если вам нужно работать с N
в качестве целого числа вместо строки, вам следует использовать Parсент
, убедившись, что указать базу 10:
var n = parseInt($(this).attr('id').match(/link-(\d+)/)[1], 10);
, если ваш ID
атрибуты не гарантируются с Link-
, а затем одна или несколько цифр, и вы хотели бы поймать этот случай, а не выбрасывать ошибку, вы должны проверить возвращаемое значение Матч
:
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
}
Использование регекса будет лучшим вариантом, например:
// id contains '1' for id="link-1"
var id = parseInt(this.id.replace(/[^\d]/g, ''), 10);
Если вы знаете, что все ваши идентификаторы префиксированы «Link-», вы можете просто получить подстроку идентификатора:
$("#my-div a").click(function(){
alert(this.id.substr(5));
});