Я хочу получить id
из родительского элемента кнопки, и вырезать текст. Я предполагал следующее:
HTML
<div id="test_4">
<button id="button">Get ID</button>
</div>
JavaScript
$('#button').click(function() {
parentID = $(this).parent().attr('id');
newID = parseInt(parentID);
alert(newID);
});
Но это выводит NaN
.
$('#button').click(function() {
parentID = $(this).parent().attr('id');
newID = +(parentID.match(/\d+/));
alert(newID);
});
<div id="782test_4">
и захочет вернуть только цифры 7824
, что такое совпадение с Regex?
Есть много ответов, которые используют регулярные выражения, но я не рекомендую его. Вам нужны data-
. Вы уже используете jQuery, чтобы получить доступ к своему id
с помощью метода .data()
. Вот пример;
HTML
<div id="test_4" data-id="4">
<!-- ^^^^^^^^^^^^ this has to be added to use .data() -->
<button id="button">Get ID</button>
</div>
JavaScript
$('#button').click(function() {
var newID = $(this).parent().data('id');
alert(newID);
});
Используйте простое регулярное выражение
$('#button').click(function () {
var parentID = $(this).parent().attr('id');
var newID = parentID.match(/\d+$/)[0];
alert(newID);
});
Демо: скрипка
Вы можете использовать регулярное выражение для соответствия числу внутри вашей строки id
:
parentID = $(this).parent().attr('id').match(/\d+/);
Попробуй это:
$('#button').click(function() {
parentID = $(this).parent().attr('id');
newID = parseInt(parentID.split("_")[1]);
alert(newID);
});
$('#button').click(function() {
parentID = $(this).parent().attr("id");
newID = parentID;
alert(newID);
});
это будет работать