Javascript jQuery仅获取此元素的父同级
我不知道怎么写这个 请参阅我的标记结构,它在一页上重复多次Javascript jQuery仅获取此元素的父同级,javascript,jquery,traversal,Javascript,Jquery,Traversal,我不知道怎么写这个 请参阅我的标记结构,它在一页上重复多次 <div class="module"> <div class="archive-info"> <span class="archive-meta"> open </span> </div> <div class="archive-me
<div class="module">
<div class="archive-info">
<span class="archive-meta">
open
</span>
</div>
<div class="archive-meta-slide">
</div>
</div>
有人能帮忙吗
谢谢
乔希
这真的很接近。这实际上是说“使用类archive meta slide
查找元素,这些元素是该元素父级的同级的后代”。您想说“查找具有类存档元幻灯片的元素,这些元素是该元素父级的同级元素”。为此,请在同级调用上使用选择器:
$(this).parent().siblings(".archive-meta-slide")
请注意,如果标记始终是此结构,则您甚至可以执行$(this).parent().next()
请参阅jQuery API:
使用
$(this).parent().parent().children('.archive-meta-slide')
这与搜索顶级模块div的子级一样好
$(this.parent().parent())
这是你的上衣
<div class="module">
使用$(this).closest(“.module”)
查找发生单击的父模块
您可能还希望在制作动画后使用完成功能更改文本
.closest()
的好处在于,它只需尽可能远地查找父链,直到找到具有正确类的对象。如果其他人稍微更改了您的HTML设计(在父链中添加另一个div或span或类似的内容),那么这比使用特定数量的.parent()
引用要容易得多
您也可以将其干燥一点,然后制作一个通用功能:
function metaToggleCommon(obj, height, text) {
var $slide = $(obj).closest(".module").find(".archive-meta-slide");
$slide.animate({ height: height}, 300, function() {
$slide.html(text);
});
}
var $metaButton = $("span.archive-meta");
$metaButton.toggle(
function() {metaToggleCommon(this, "0", "close")},
function() {metaToggleCommon(this, "43px", "open")}
);
尝试使用指定的选择器返回到父级之前返回的选项
$(this).closest(".module")
你在找
$(this).parent().next('.archive-meta-slide')
如果#模块的结构发生变化,这可能会更加健壮:
$(this).closest('#module').children('.archive-meta-slide')
使用
正如jfriend00所解释的那样,closest()
的使用更加健壮。
$(this).closest(".module")
$(this).parent().next('.archive-meta-slide')
$(this).closest('#module').children('.archive-meta-slide')
jQuery(this).closest('.prev-class-name').find('.classname').first()