0

次のhtmlスニペットがあります

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

私がやろうとしているのは、Available の値を取得することです。つまり、123

私は持っている:

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

しかし、これはAvailable:123. 数値だけが必要です。

何か案は?

ありがとう

4

4 に答える 4

3
$(function(){

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

});

Sample : http://jsfiddle.net/wrFAh/8/

EDIT : The above solution is expecting the LI element to have only one type of HTML element other than the number to retrieved, that is the span, If you are adding a div to the li, this wont work.

To handle this, I would wrap the Price in the HTML in a span and access it to avoid such problems.

So my HTML will look like

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

And script would be

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

Sample http://jsfiddle.net/wrFAh/12/

于 2012-06-07T14:40:02.240 に答える
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);

<li>それはあなたが興味を持っているものを特定するためのちょっとしたjQueryであり、次に純粋なJavascriptで反復を行います。

于 2012-06-07T14:41:53.770 に答える
0

数値を抽出するために正規表現を追加できます

 var a = $(".product li:contains('Available')").text();
 var number = a.match(/[0-9]+/)[0];
于 2012-06-07T14:42:16.023 に答える
0

There is no way to make a selector that will do what you want. Ideally, you would modify your HTML and add classes and another span around the value. If you can't do that, then provided there will always be a colon and a value after, you can use this:

var a = $(".product li:contains('Available')").text().split(":")[1];
于 2012-06-07T14:40:26.967 に答える