jQuery找到最近的父母Div

时间:2012-08-08 10:01:10

标签: jquery next siblings

我正在尝试使用以下方案学习jQuery。为此,我在阅读了多个SO问题后尝试了以下jQuery;但它没有用

$(this).closest('.viewLogText').parent().find('.reportLog').css("display", "none");

情境:

div中有三个子div元素,它们具有Css类“repeaterRecord”。子div具有css类 - repeaterIdentifier,viewLogTitle和reportLog。

这个结构有两个div(div有Css类“repeaterRecord”)。

enter image description here

带有viewLog类的div如下所示。

   <div class="viewLogTitle">
        <div class="viewLogText">
            View Report Log
        </div>
        <div>
            <img alt="Expand" src="Images/PlusIcon.GIF" class="expandLogIcon" />
            <img alt="Collapse" src="Images/MinusIcon.GIF" class="collapseLogIcon" />
        </div>
    </div>

当点击collapseLogIcon图像时,我需要隐藏(仅)具有“reportLog”类的最近的div(在“viewLogTitle”的同一级别)。我们怎么能用jQuery做到这一点?

更新了工作示例

http://jsfiddle.net/Lijo/L9w4F/11/http://jsfiddle.net/Lijo/L9w4F/8/http://jsfiddle.net/Lijo/L9w4F/12/

参考

  1. Efficient, concise way to find next matching sibling?

  2. jquery select siblings 'until'

3 个答案:

答案 0 :(得分:5)

您可以使用.siblings()查找最近的div

<强> API HERE

答案 1 :(得分:2)

我建议使用:

$(this).closest('.viewLogTitle').next('.reportLog').hide();

请注意,传递给next()方法('.reportLog')的过滤器意味着viewLogTitle元素的下一个同级元素只有在时才会受到影响匹配那个选择器。如果.viewLogTitle的下一个兄弟将总是作为目标(HTML不会改变),那么过滤器是不必要的,可以省略。

或者,如果他们并不总是连续跟随(但“最近的”总是受影响的那个),对于跟随兄弟姐妹:

$(this).closest('.viewLogTitle').nextAll('.reportLog:first').hide();

或者对于前一个兄弟姐妹(如果.reportLog之前的.viewLogTitle):

$(this).closest('.viewLogTitle').prevAll('.reportLog:first').hide();

参考文献:

答案 2 :(得分:1)

您可以使用siblings()方法:

$(this).closest('.viewLogText').siblings('.reportLog').hide()

您还可以尝试与hide()

相同的.css("display", "none");方法