我正在尝试使用以下方案学习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”)。
带有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/
参考:
答案 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");
方法