在选择器后找到一个值

时间:2012-06-07 14:35:01

标签: jquery

我有以下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。我只需要数值。

有什么想法吗?

由于

4 个答案:

答案 0 :(得分:3)

$(function(){

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

});

示例:http://jsfiddle.net/wrFAh/8/

编辑:上述解决方案期望LI元素只有一种类型的HTML元素,而不是要检索的数字,即span,如果你正在向li添加div,这不会起作用。

为了解决这个问题,我会将Price包含在span的HTML中并访问它以避免此类问题。

所以我的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/

答案 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来进行迭代。

答案 2 :(得分:0)

没有办法让选择器能够做你想做的事。理想情况下,您可以修改HTML并添加类和值的另一个范围。如果你不能这样做,那么只要有一个冒号和一个值,你就可以使用它:

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

答案 3 :(得分:0)

您可以添加正则表达式来提取数字

 var a = $(".product li:contains('Available')").text();
 var number = a.match(/[0-9]+/)[0];