1

我有一些元素在一个元素中飞来飞去,当窗口完成加载时需要更改($(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>
4

3 回答 3

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 条件中检查的元素。

小提琴

我不知道您是否打算仅通过隐藏图像来获得空锚标记。如果是这样,只需添加一个 find 即可。

于 2013-06-25T20:23:06.940 回答
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()
于 2013-06-25T20:25:09.603 回答
1

你看过父母http://api.jquery.com/parents/你可以像这样传递一个选择器:

 $(this).parents('.boxy').find(".articleImageThumb")

不过要小心,如果该 boxy 有一个父 boxy,则 parents() 将返回它,因此您会找到多个 .articleImageThumb。

于 2013-06-25T20:28:24.130 回答