我有以下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 :(得分: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);
});
答案 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];