1

いくつかの特定の値を持つ div のいくつかの childrend 要素を非表示にしたいと思います: この構造があるとしましょう:

<div classe="parent" >
    <div class="child" >
    <img class="image" src="">
        <div class="class1">
        <a href="#" class="calsse2">someLink</a>
        <div class="class3">myValue</div>
    </div>
    </div>
</div>

「親」ノード内には、いくつかの「子」レン ノードがあります。

int である myValue が特定の値より大きいか小さい" child "ren ノードを非表示にしたいと考えています。

やってみた :

$('.parent').each(function(){
     var n = parseInt($('.classe3').text().substring(0,2), 10);
     if(n > value){
          this.hide();
        } 
})

うまく機能していません!

4

3 に答える 3

0

これを試して:

$(div:contains("myValue")).filter(:parent).hide();
于 2013-07-06T12:03:50.443 に答える
0

「int である myValue が指定された値より大きいか小さい場合」

class3次の例では、 で指定した数値より大きいテキストを持つすべての子要素を非表示にしvalます。

// hide elements containing a number greater than val
var val = 20;  
$(".parent .child").show().filter(function () {
    var n = $(this).find(".class3").text();
    return +n > val;
}).hide();

デモ: http://jsfiddle.net/zLHJd/

これにより、すべての要素が検索され、.child最初にすべてが表示されます。次に、リストを適切な値を持つものだけにフィルターして戻し、それらを非表示にします。問題のコードと比較した主な違いは、ループまたはフィルター内の現在の要素の要素.find()のみをチェックするために (または他の DOM トラバーサル メソッド) を使用する必要があることです。class3 child

上記はint を明示的にテストしませんが、値が数値でない場合valに単項プラス演算子が返され、常に になるため、より大きい数値を持つもののみを非表示にします。実際に int をテストして、小数点以下の桁数を無視する (div を非表示にしない) 場合は、次のようにします。NaNNaN > valfalse

    return !/\D/.test(n) && +n > val;

つまり、 に対してテストする前に、div に数字以外の文字がないことをテストしvalます。

于 2013-07-06T12:15:52.833 に答える