需要一种更优雅的方法,使用jQuery在dom树中查找元素

can*_*ast 1 javascript jquery

我有一些元素在一个元素中飞来飞去,当窗口完成加载时需要改变它($(window).load...)

当脚本加载时,我一直在努力寻找一种更优雅的方法来查找字符串.

值得注意的是,您还可以看到猖獗的重复使用parentnext运营商......

我已经尝试了,closest但它只上了dom树一次(从我的理解)并且parents从来没有真正为我工作过,但我可能错了.

防爆.

$(window).load( function(){
    if($(".postmetadata:contains('Vancity Buzz')").length){
        $(this).parent().parent().next().next().next().next('.articleImageThumb img').hide();
    }
});
Run Code Online (Sandbox Code Playgroud)

这个运行的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>
Run Code Online (Sandbox Code Playgroud)

PSL*_*PSL 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
Run Code Online (Sandbox Code Playgroud)

this 指的是没有在if条件下检查的元素的窗口.

小提琴

我不知道你的意图是通过隐藏图像来获得空锚标签.如果是这样,只需添加一个查找.

  • @canacast你也使用`$(this)`完全错了 (2认同)