根据内容隐藏html节点中的某些元素

时间:2013-07-06 11:46:50

标签: jquery each show-hide

我想隐藏一些具有某些特定值的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>

在“父”节点内有几个“子”ren节点:

我想隐藏“”ren节点,其中作为int的myValue大于或小于给定值。

我在尝试:

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

效果不好!

3 个答案:

答案 0 :(得分:0)

DEMO

var searchValue = 500;
$('.parent').find('.class3').show().filter(function () {
    return +$.trim($(this).text()) !== searchValue // or '<' or '>'
}).hide();
顺便说一下,你有一个错字:

<div classe="parent" > 

必须:

<div class="parent" >

答案 1 :(得分:0)

试试这个:

$(div:contains("myValue")).filter(:parent).hide();

答案 2 :(得分: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元素循环或过滤器中的{1}}元素。

上面没有明确测试 int,,但只会隐藏数值大于child的那些,因为一元加运算符会返回val值不是数字,NaN将始终为NaN > val。如果你真的想测试一个int,使得带小数位的数字被忽略(它们的div不被隐藏),你可以这样做:

false

即,在对 return !/\D/.test(n) && +n > val; 进行测试之前,测试div中没有​​非数字字符。