Извлечение числа из строки в li с помощью jquery - PullRequest
2 голосов
/ 13 апреля 2011

Как извлечь числовую часть только после элемента span?

<ul class="info">
 <li class="name"><span class="textLabel">Name: </span>further (22)</li>
 <li>more stuff</li>
 <li>more stuff</li>
</ul>

Я могу получить полный текст <li>, используя .contents(), но, поскольку мне не нужно значение диапазона, я просто использую .contents()[1], а затем получаю further (22). Здесь у меня проблемы - я продолжаю получать ошибки при использовании .match(/\((\d+)\)/ как TypeError: Object #<Text> has no method 'match'.

Ответы [ 6 ]

1 голос
/ 13 апреля 2011

Вот jsfiddle , который делает именно это:

$(document).ready(function(){
    alert(parseInt($('li.name').text().replace(/[^0-9\.]/g, '')));
});
0 голосов
/ 13 апреля 2011
var num = $('li.name').text().split('(')[1].split(')')[0];
0 голосов
/ 13 апреля 2011

Демонстрация в реальном времени

alert($('.name').text().match(/\((\d+)\)/)[1]); // 22
0 голосов
/ 13 апреля 2011
/*stuff you do to get your element*/.text().match(/\((\d+)\)/);

Содержание возвращает элементы, текстовые узлы и узлы комментариев. Поскольку вам нужен только текстовый контент, вы должны использовать text () .

0 голосов
/ 13 апреля 2011

Попробуйте:

$('li').text().match(...)

Ошибка связана с тем, что вы пытаетесь выполнить регулярное выражение для узла DOM, а не для строки.

0 голосов
/ 13 апреля 2011

Попробуйте:

my_str = mystr.slice(-3,-2);

Только для фиксированной длины.Или:

var my_array=my_input.split("(");
var my_out = my_array[1].slice(1,-1); //Trim final character
...