我想隐藏一些具有某些特定值的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();
}
})
效果不好!
答案 0 :(得分:0)
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();
这会找到所有.child
元素,使它们最初都可见,然后将列表过滤回具有适当值的元素并隐藏它们。与问题中的代码相比的主要区别在于您必须使用.find()
(或其他一些DOM遍历方法)仅检查当前 {的class3
元素循环或过滤器中的{1}}元素。
上面没有明确测试 int,,但只会隐藏数值大于child
的那些,因为一元加运算符会返回val
值不是数字,NaN
将始终为NaN > val
。如果你真的想测试一个int,使得带小数位的数字被忽略(它们的div不被隐藏),你可以这样做:
false
即,在对 return !/\D/.test(n) && +n > val;
进行测试之前,测试div中没有非数字字符。