1

我想隐藏具有某些特定值的 div 的一些子元素:假设我们有这个结构:

<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>

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

我想隐藏“”节点,其中 myValue 是一个 int 大于或小于给定值。

我在尝试:

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

它工作得不太好!

4

3 回答 3

0

演示

var searchValue = 500;
$('.parent').find('.class3').show().filter(function () {
    return +$.trim($(this).text()) !== searchValue // or '<' or '>'
}).hide();

顺便说一句,你这里有一个错字:

<div classe="parent" > 

一定是:

<div class="parent" >
于 2013-07-06T11:55:56.907 回答
0

尝试这个:

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

“其中 myValue 是 int 大于或小于给定值”

以下内容隐藏了所有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;

也就是说,在针对val.

于 2013-07-06T12:15:52.833 回答