2012-06-07 6 views
0

я следующие фрагмент кода HTMLнайти значение после выбора

<ul class="product"> 
<li><span>Available:</span>123</li> 
<li><span>Code:</span>12345</li> 
</ul> 

Что я ищу, чтобы сделать, чтобы получить значение из доступных, т.е. 123

у меня есть:

var a = $(".product li:contains('Available')").text(); 

Но это магазины Available:123. Мне нужно только числовое значение.

Любые идеи?

Благодаря

+0

вы всегда можете разделить 'Ā' переменную с помощью': 'чтобы получить нужное значение, но я уверен, что кто-то сможет настроить ваш оригинальный селектор. – martincarlin87

+0

Простейшим решением, хотя, возможно, и не самым простым в реализации, было бы обернуть '123' в другом' 'уникальным классом и использовать' .find ('. Classname'). Text() '. – Blazemonger

ответ

3
$(function(){ 

    var a = $(".product li:contains('Available')").clone(); 
    a.find('span').remove(); 
    alert(a.html());  

}); 

Пример: http://jsfiddle.net/wrFAh/8/

EDIT: выше решение ожидает, что LI элемент имеет только один тип HTML элемента, отличного от числа к извлеченной, то есть span , Если вы добавляете div в li, это не будет работать.

Чтобы обработать это, я бы обернул Price в HTML в span и обратился к нему, чтобы избежать таких проблем.

Так что мой HTML будет выглядеть

<ul class="product"> 
    <li><span>Available:</span><span class="price">123</span></li> 
    <li><span>Code:</span><span class="price">123</span></li> 
</ul> 

И сценарий будет

$(function(){  
    var a = $(".product li:contains('Available')").find(".price").html(); 
    alert(a); 
}); 

Образец http://jsfiddle.net/wrFAh/12/

+0

Очень приятное решение, чем мое. +1 –

+0

@ Xeon06 Спасибо. Я обновил ответ с лучшим подходом. – Shyju

0

Там нет никакого способа, чтобы сделать селектор, который будет делать то, что вы хотите. В идеале вы изменили бы свой HTML и добавили бы классы и еще один диапазон вокруг значения. Если вы не можете сделать это, то при условии, что всегда будет двоеточие и значение после того, как вы можете использовать это:

var a = $(".product li:contains('Available')").text().split(":")[1]; 
1

В качестве альтернативы вы можете перебирать дочерние узлы <li> идентифицированных и использовать значение текстового узла.

var myLi = $(".product li:contains('Available')")[0]; 

var a; 
for(var i = 0; i < myLi.childNodes.length; i++) { 
    if(myLi.childNodes[i].nodeType === 3) { 
     a = myLi.childNodes[i].nodeValue; 
    }  
} 

alert(a); 

Это немного JQuery, чтобы идентифицировать <li> вас интересует, то чисто Javascript, чтобы сделать итерации.

0

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

var a = $(".product li:contains('Available')").text(); 
var number = a.match(/[0-9]+/)[0]; 
Смежные вопросы