我有一些元素在窗口完成加载时需要更改的元素中飞来飞去($(window).load...
)
当脚本加载时,我一直在努力寻找一种更优雅的方法来寻找字符串。
下面,您还可以看到parent
和next
运营商的重复使用......
我已经尝试了closest
但是它只上了dom树一次(根据我的理解)而且parents
从来没有真正为我工作,但我可能错了。
实施例
$(window).load( function(){
if($(".postmetadata:contains('Vancity Buzz')").length){
$(this).parent().parent().next().next().next().next('.articleImageThumb img').hide();
}
});
HTML输出贯穿以下内容:
<div class="boxy">
<div class="read">
<div class="postmetadata">Vancity Buzz</div>
<div class="articleTitle"></div>
</div>
<div class="rightCtrls"></div>
<div class="initialPostLoad"></div>
<div class="ajaxBoxLoadSource"></div>
<div class="articleImageThumb">
<a href="#">
<img src="image.png" class="attachment-large wp-post-image" alt=""/>
</a>
</div>
</div>
答案 0 :(得分:6)
我想你想这样做:
$(".postmetadata:contains('Vancity Buzz')")
.closest('.read') //Closest will get you to the parent with class .read
.siblings('.articleImageThumb').hide(); //this will get you all the siblings with class articleImageThumb
this
指的是那里没有你在if条件中检查的元素的窗口。
<强> Fiddle 强>
我不知道你的意图是仅通过隐藏图像来获得空锚标签。如果是这样,只需添加一个查找。
答案 1 :(得分:4)
你可以这样做
$('.articleImageThumb img').toggle($(".postmetadata:contains('Vancity Buzz')").length)
如果有多个div并且你需要遍历那么有多种方式
$(".boxy:has(.postmetadata:contains('Vancity Buzz'))").find('.articleImageThumb img').hide()
或
$('.postmetadata:contains("Vancity Buzz")').closest('.boxy').find('.articleImageThumb img').hide()
或
$(".boxy:has(.postmetadata:contains('Vancity Buzz')) .articleImageThumb img").hide()
答案 2 :(得分:1)
您是否考虑过父母http://api.jquery.com/parents/,您可以通过这样的选择器:
$(this).parents('.boxy').find(".articleImageThumb")
小心但是,如果有一个父级的四四方方,那么parent()会返回它,因此你会发现多个.articleImageThumb。