JavaScript/jQuery - захват целого числа из идентификатора элемента

От следующей разметки.

<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);
});
5
задан jerome 8 January 2010 в 19:41
поделиться

10 ответов

[

]Это должен быть самый простой способ:[

] [
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')
});
]
0
ответ дан 13 December 2019 в 05:36
поделиться

Пока предыдущий текст всегда остается неизменным, вы можете просто использовать метод substring , чтобы получить номер.

$(this).attr('id').substring(5)
2
ответ дан 13 December 2019 в 05:36
поделиться
$(this).attr('id').split('-')[1];
1
ответ дан 13 December 2019 в 05:36
поделиться
var id = $(this).attr('id'),
    regex = /(\d+)/,
    matched = id.match( regex );

if ( matched ) {
    alert( matched[1] )
}
1
ответ дан 13 December 2019 в 05:36
поделиться

Вы можете использовать регулярное выражение для анализа числа:

var match = /link-(\d+)/.exec($(this).attr('id'));
var num = match[1];
0
ответ дан 13 December 2019 в 05:36
поделиться

$(this).attr('id').replace('link-','')

2
ответ дан 13 December 2019 в 05:36
поделиться

Я обычно делаю что-то подобное:

$("#my-div a").click(function(){
    var match;
    if (match = $(this).attr('id').match(/link-(\d+)/)) {
      var number = parseInt(match[1],10);
      alert(number);
    }
});
1
ответ дан 13 December 2019 в 05:36
поделиться

Вы можете попробовать:

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
}
4
ответ дан 13 December 2019 в 05:36
поделиться

Использование регекса будет лучшим вариантом, например:

// id contains '1' for id="link-1"
var id = parseInt(this.id.replace(/[^\d]/g, ''), 10);
1
ответ дан 13 December 2019 в 05:36
поделиться

Если вы знаете, что все ваши идентификаторы префиксированы «Link-», вы можете просто получить подстроку идентификатора:

$("#my-div a").click(function(){
   alert(this.id.substr(5));
});
0
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: